DbSet の定義
Code First ワークフローを使用して開発する場合、データベースとのセッションを表し、モデル内の型ごとに DbSet を公開する派生 DbContext を定義します。 このトピックでは、DbSet プロパティを定義するさまざまな方法について説明します。
DbSet プロパティを使用する DbContext
Code First の例で示されている一般的なケースでは、DbContext で、モデルのエンティティ型のパブリック自動 DbSet プロパティを使用しています。 次に例を示します。
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
これを Code First モードで使用すると、Blogs と Posts がエンティティ型として構成され、これらから到達可能な他の型も構成されます。 さらに、DbContext は、これらの各プロパティのセッターを自動的に呼び出して、適切な DbSet のインスタンスを設定します。
IDbSet プロパティを使用する DbContext
モックやフェイクを作成する場合など、インターフェイスを使用して set プロパティを宣言する方が便利な場合があります。 このような場合は、DbSet の代わりに IDbSet インターフェイスを使用できます。 次に例を示します。
public class BloggingContext : DbContext
{
public IDbSet<Blog> Blogs { get; set; }
public IDbSet<Post> Posts { get; set; }
}
このコンテキストは、set プロパティに DbSet クラスを使用するコンテキストとまったく同様に機能します。
読み取り専用の set プロパティを使用する DbContext
DbSet または IDbSet プロパティのパブリック セッターを公開したくない場合は、代わりに読み取り専用プロパティを作成し、自分で set インスタンスを作成できます。 次に例を示します。
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs
{
get { return Set<Blog>(); }
}
public DbSet<Post> Posts
{
get { return Set<Post>(); }
}
}
DbContext は、Set メソッドから返された DbSet のインスタンスをキャッシュするので、これらの各プロパティは、呼び出されるたびに同じインスタンスを返します。
Code First のエンティティ型の検出は、パブリック ゲッターおよびセッターを使用するプロパティの場合と同様に機能します。
.NET