配置 EF Core 提供程序
在本指南中,您将学习;了解如何配置应用程序以使用MongoDB实体框架核心提供程序。 要学习;了解如何设立新项目和安装 EF Core 提供程序,请参阅快速入门。
创建 POCO
创建一个 普通旧 CLR/类对象 ,或 POCO ,用作实体的模型。POCO 是一个简单的类对象,它不会从任何特定于框架的基类或接口继承功能。
以下代码示例展示了如何创建代表客户的 POCO:
public class Customer { public ObjectId Id { get; set; } public String Name { get; set; } public String Order { get; set; } }
提示
要了解有关 POCO 的更多信息,请参阅 .NET/C# 驱动程序文档中的POCO 指南。
创建数据库上下文类
要开始使用 Entity Framework Core,请创建一个上下文类,该类派生自 DBContext 。 DbContext
派生类实例表示数据库会话,用于查询和保存实体的实例。
DBContext
类公开DBSet
属性,这些属性指定您在使用该上下文时可以与之交互的实体。
以下示例创建了DBContext
派生类的实例,并将Customer
对象指定为DBSet
属性:
public class MyDbContext : DbContext { public DbSet<Customer> Customers { get; init; } public MyDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Customer>().ToCollection("customers"); } }
前面的代码示例覆盖了OnModelCreating()
方法。 通过重写OnModelCreating()
方法,您可以指定模型及其属性的配置详细信息。 此示例使用ToCollection()
Customer
方法指定应用程序中的 实体映射到customers
MongoDB 中的collection集合。
使用 MongoDB
创建DBContext
类后,构造一个DbContextOptionsBuilder
对象并调用其UseMongoDB()
方法。 MongoClient
此方法接受两个参数:一个实例和存储您正在使用的collection的数据库的名称。
UseMongoDB()
方法返回一个DbContextOptions
对象。 将此对象的Options
属性传递给DBContext
类的构造函数。
以下示例展示了如何以这种方式构造DBContext
对象:
var mongoClient = new MongoClient("<Your MongoDB Connection URI>"); var dbContextOptions = new DbContextOptionsBuilder<MyDbContext>().UseMongoDB(mongoClient, "<Database Name"); var db = new MyDbContext(dbContextOptions.Options);
提示
创建 MongoClient
使用 EF Core 提供程序时,您可以从MongoDB .NET/ C#驱动程序调用方法。 上一个示例使用.NET/ C#驱动程序中的MongoClient()
方法创建连接到MongoDB实例的MongoDB客户端。
要了解有关使用 MongoDB .NET/C# 驱动程序连接到 MongoDB 的更多信息,请参阅 .NET/C# 驱动程序文档中的连接指南。
例子
以下代码示例展示了如何配置 EF Core 提供程序并将文档插入数据库:
using Microsoft.EntityFrameworkCore; using MongoDB.Bson; using MongoDB.Driver; using Microsoft.Extensions.Configuration; using MongoDB.EntityFrameworkCore.Extensions; var mongoClient = new MongoClient("<Your MongoDB Connection URI>"); var dbContextOptions = new DbContextOptionsBuilder<MyDbContext>().UseMongoDB(mongoClient, "<Database Name>"); var db = new MyDbContext(dbContextOptions.Options); // Add a new customer and save it to the database db.Customers.Add(new Customer() { name = "John Doe", Order = "1 Green Tea" }); db.SaveChanges(); public class Customer { public ObjectId Id { get; set; } public String Name { get; set; } public String Order { get; set; } } public class MyDbContext : DbContext { public DbSet<Customer> Customers { get; init; } public MyDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Customer>().ToCollection("customers"); } }