本页包含常见问题及其相应解答。
提示
如果在此页面上找不到问题的回答,请参阅问题和帮助页面,了解后续步骤和更多资源。
.NET/ C#驱动程序和 EF Core 提供程序之间有什么区别?
MongoDB .NET/ C#驱动程序是一个直接公开MongoDB功能的库,并包括具有投影、群组操作和灵活映射功能的 LINQ提供商。 该驾驶员包含以下功能:
事务
批量操作
LINQ 查询
直接修改数据库的操作
聚合操作
自定义映射
EF Core 提供程序允许您在.NET/ C#应用程序中将 Microsoft 的 Entity Framework Core 与MongoDB结合使用。 EF Core 提供程序支持变更跟踪、基于实体的 LINQ 操作以及 Entity Framework Core 用户熟悉的建模。 该提供商包括以下功能:
智能对象跟踪
基于实体的 LINQ 操作
使用 Fluent API进行实体框架建模和映射
通过变更跟踪自动更新数据库
如何使用 EF Core 提供程序管理索引?
您可以通过调用 DbContext 类的 OnModelCreating() 方法中的 HasIndex() 方法,使用 EF Core 提供程序创建索引。要详细学习;了解如何使用 EF Core 提供程序创建索引,请参阅 索引 指南。
由于 EF Core 提供程序构建在.NET/ C#驱动程序之上,因此您还可以直接使用.NET/ C#驱动程序来管理应用程序中的索引。要在 EF Core 提供程序应用程序中使用驾驶员方法,请在用于设立DbContext 的 MongoClient 上调用这些方法。
以下示例使用.NET/ C#驱动程序方法在 movies集合上创建索引:
using MongoDB.Driver; var client = new MongoClient("<connection string>"); var database = client.GetDatabase("sample_mflix"); await CreateIndexesAsync(database); async Task CreateIndexesAsync(IMongoDatabase database) { var moviesIndex = new CreateIndexModel<Movie>(Builders<Movie>.IndexKeys .Ascending(x => x.Title) .Ascending(x => x.Genres)); await database.GetCollection<Movie>("movies") .Indexes.CreateOneAsync(moviesIndex); }
要学习;了解有关使用驾驶员创建索引的更多信息,请参阅MongoDB .NET/ C#驱动程序文档中的索引指南。
我是否可以访问 EF Core 提供程序中的.NET/ C#驱动程序功能?
您可以在用于设立DbContext 的 MongoClient 上调用驾驶员方法,从而直接在 EF Core 提供程序应用程序中使用.NET/ C#驱动程序。EF Core 提供程序构建在.NET/ C#驱动程序之上,因此您可以在应用程序中使用所有驾驶员功能。示例,您可以使用驾驶员执行Atlas Search查询,如以下示例所示:
// Client used to set up your DbContext var client = new MongoClient("<connection string>"); var clientDB = client.GetDatabase("sample_guides"); var collection = clientDB.GetCollection<Planet>("planets"); var searchResult = collection.Aggregate() .Search(Builders<Planet>.Search.Equals(p => p.hasRings, true)) .ToList(); foreach (var p in searchResult) { Console.WriteLine(p.name); }
要学习;了解有关使用.NET/ C#驱动程序执行Atlas Search查询的更多信息,请参阅驾驶员文档中的Atlas Search指南。