直感的には、DbContextはデータベース(またはデータベース内のテーブルとビューのコレクション)に対応しますが、DbSetはデータベース内のテーブルまたはビューに対応します。したがって、両方の組み合わせを取得することは完全に理にかなっています!
DbContextオブジェクトを使用してテーブルとビュー(DbSetで表されます)にアクセスし、DbSetを使用してテーブルデータへのアクセス、作成、更新、削除、および変更を行います。
データベースに10個のテーブルがあり、アプリケーションがそのうちの5個で動作する場合(これらをTable1-表5と呼びます)、MyAppContextクラスが次のように定義されているMyAppContextオブジェクトを使用してアクセスするのが理にかなっています。
public class MyAppContext : DbContext
{
public MyAppContext () : ;
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public DbSet<Table3> Table3 { get; set; }
public DbSet<Table4> Table4 { get; set; }
public DbSet<Table5> Table5 { get; set; }
}
たとえば、識別子Table1は、タイプの名前と、定義されたコンテキストタイプのプロパティの名前の両方として使用されることに注意してください。上に表示されているのは非常に典型的なものです。テーブルスキーマに対応するクラスの例を以下に示します。
public class Table1
{
public int Id {get; set;}
public string AStringField {get; set;}
//etc.
}
詳細については、こちらをご覧ください:http ://entityframeworktutorial.net/