このガイドでは、MongoDB Entity Framework コア プロバイダーを使用するようにアプリケーションを構成する方法を学習します。 新しいプロジェクトを設定し、TF コア プロバイダーをインストールする方法については、 クイック スタートを参照してください。
POCO を作成
エンティティのモデルとして使用するには、 Plain Old CLR/Classオブジェクト、または POCO を作成します。POCO は、フレームワーク固有の基本クラスやインターフェースから機能を継承しない単純なクラスオブジェクトです。
次のコード例は、カスタマーを表す POCO を作成する方法を示しています。
public class Customer { public ObjectId Id { get; set; } public String Name { get; set; } public String Order { get; set; } }
Tip
POCO の詳細については、.NET/C# ドライバーのドキュメントのPOCO ガイドを参照してください。
DB コンテキスト クラスの作成
Entity Framework コアの使用を開始するには、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エンティティが MongoDB のcustomersコレクションにマップされることを指定します。
MongoDB の使用
DBContextクラスを作成したら、 DbContextOptionsBuilderオブジェクトを構築し、そのUseMongoDB()メソッドを呼び出します。 このメソッドでは、 MongoClientインスタンスと、操作するコレクションを保存するデータベースの名前の 2 つのパラメータを取ります。
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);
Tip
MongoClient の作成
LF Core プロバイダーを使用する場合、MongoDB .NET/C# ドライバーからメソッドを呼び出すことができます。 前の例では、.NET/C# ドライバーのMongoClient()メソッドを使用して、MongoDB インスタンスに接続する MongoDB クライアントを作成しています。
MongoDB .NET/C# ドライバーを使用して MongoDB に接続する方法の詳細については、.NET/C# ドライバーのドキュメントの「接続ガイド」を参照してください。
例
次のコード例は、FS コアプロバイダーを構成し、 データベースにドキュメントを挿入する方法を示しています。
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"); } }