DbContext クラス

[このページは、Entity Framework 6 に関するページです。最新バージョンは、'Entity Framework' NuGet パッケージとして入手できます。Entity Framework の詳細については、msdn.com/data/ef を参照してください。]

DbContext インスタンスは、データベースに照会してすべての変更をグループ化し、1 つの単位としてストアに書き戻すことができるような、作業単位パターンとリポジトリ パターンの組み合わせを表します。 DbContext は ObjectContext と概念的に似ています。

継承階層

System.Object
  System.Data.Entity.DbContext
    System.Data.Entity.Infrastructure.TransactionContext
    System.Data.Entity.Migrations.History.HistoryContext

名前空間:  System.Data.Entity
アセンブリ:  EntityFramework (EntityFramework.dll 内)

構文

'宣言
Public Class DbContext _
    Implements IDisposable, IObjectContextAdapter
'使用
Dim instance As DbContext
public class DbContext : IDisposable, IObjectContextAdapter
public ref class DbContext : IDisposable, 
    IObjectContextAdapter
type DbContext =  
    class 
        interface IDisposable 
        interface IObjectContextAdapter 
    end
public class DbContext implements IDisposable, IObjectContextAdapter

DbContext 型で公開されるメンバーは以下のとおりです。

コンストラクター

  名前 説明
プロテクト メソッド DbContext() 規約を使用して接続先のデータベースの名前を作成する新しいコンテキスト インスタンスを構築します。規約に基づく名前は、派生コンテキスト クラスの完全な名前 (名前空間 + クラス名) です。これを使用して接続を作成する方法については、クラスの解説を参照してください。
パブリック メソッド DbContext(String) 指定された文字列を接続先のデータベースの名前または接続文字列として使用する新しいコンテキスト インスタンスを構築します。これを使用して接続を作成する方法については、クラスの解説を参照してください。
プロテクト メソッド DbContext(DbCompiledModel) 規約を使用して接続先のデータベースの名前を作成する新しいコンテキスト インスタンスを構築し、指定されたモデルからそのインスタンスを初期化します。規約に基づく名前は、派生コンテキスト クラスの完全な名前 (名前空間 + クラス名) です。これを使用して接続を作成する方法については、クラスの解説を参照してください。
パブリック メソッド DbContext(DbConnection, Boolean) 既存の接続を使用してデータベースに接続する新しいコンテキスト インスタンスを構築します。contextOwnsConnection が false の場合、コンテキストが破棄されても接続は破棄されません。
パブリック メソッド DbContext(String, DbCompiledModel) 指定された文字列を接続先のデータベースの名前または接続文字列として使用する新しいコンテキスト インスタンスを構築し、指定されたモデルからそのインスタンスを初期化します。これを使用して接続を作成する方法については、クラスの解説を参照してください。
パブリック メソッド DbContext(ObjectContext, Boolean) 既存の ObjectContext を中心に新しいコンテキスト インスタンスを構築します。
パブリック メソッド DbContext(DbConnection, DbCompiledModel, Boolean) 既存の接続を使用してデータベースに接続する新しいコンテキスト インスタンスを構築し、指定されたモデルからそのインスタンスを初期化します。contextOwnsConnection が false の場合、コンテキストが破棄されても接続は破棄されません。

上揃え

プロパティ

  名前 説明
パブリック プロパティ ChangeTracker エンティティの変更追跡を処理するコンテキストの機能にアクセスできます。
パブリック プロパティ Configuration コンテキストの構成オプションにアクセスできます。
パブリック プロパティ Database このコンテキストに対してデータベース インスタンスを作成します。基になるデータベースの作成、削除、存在確認を実行できます。

上揃え

メソッド

  名前 説明
パブリック メソッド Dispose() 保護された Dispose メソッドを呼び出します。
プロテクト メソッド Dispose(Boolean) コンテキストを破棄します。基になる ObjectContext がこのコンテキストによって作成された場合、またはこのコンテキストの作成時に所有権がこのコンテキストに渡された場合は、それも破棄されます。データベースへの接続 (DbConnection オブジェクト) がこのコンテキストによって作成された場合、またはこのコンテキストの作成時に所有権がこのコンテキストに渡された場合は、接続も破棄されます。
パブリック メソッド Entry(Object) エンティティに関する情報にアクセスし、エンティティに対してアクションを実行できる、指定されたエンティティの DbEntityEntry オブジェクトを取得します。
パブリック メソッド Entry<TEntity>(TEntity) エンティティに関する情報にアクセスし、エンティティに対してアクションを実行できる、指定されたエンティティの DbEntityEntry<TEntity> オブジェクトを取得します。
パブリック メソッド Equals 指定した DbContext が、現在の DbContext と等しいかどうかを判断します。 (Object.Equals(Object) をオーバーライドします。)
プロテクト メソッド Finalize (Object から継承されます。)
パブリック メソッド GetHashCode この DBContext のハッシュ関数を返します。 (Object.GetHashCode() をオーバーライドします。)
パブリック メソッド GetType 現在の DbContext の型を返します。
パブリック メソッド GetValidationErrors 追跡対象のエンティティを検証し、その検証結果を格納した DbEntityValidationResult のコレクションを返します。
プロテクト メソッド MemberwiseClone (Object から継承されます。)
プロテクト メソッド OnModelCreating このメソッドは、派生コンテキストのモデルの初期化が完了したが、まだロックダウンされていないときに呼び出され、コンテキストの初期化に使用されます。このメソッドの既定の実装では何も行われませんが、モデルがロックダウンされる前にさらに設定できるように派生クラスでオーバーライドできます。
パブリック メソッド SaveChanges このコンテキストで行われたすべての変更を基になるデータベースに保存します。
パブリック メソッド SaveChangesAsync() このコンテキストで行われたすべての変更を、基になるデータベースに非同期で保存します。
パブリック メソッド SaveChangesAsync(CancellationToken) このコンテキストで行われたすべての変更を、基になるデータベースに非同期で保存します。
パブリック メソッド Set(Type) コンテキストの特定の型のエンティティと基になるストアにアクセスするための非ジェネリック DbSet インスタンスを返します。
パブリック メソッド Set<TEntity>() コンテキストの特定の型のエンティティと基になるストアにアクセスするための DbSet<TEntity> インスタンスを返します。
プロテクト メソッド ShouldValidateEntity ユーザーが追加されたエンティティと変更されたエンティティのみを検証する既定の動作をオーバーライドできるようにするための拡張ポイント。
パブリック メソッド ToString DbContext を表す文字列を返します。 (Object.ToString() をオーバーライドします。)
プロテクト メソッド ValidateEntity ユーザーがエンティティの検証をカスタマイズしたり、検証結果にフィルターをかけて除外したりできるようにするための拡張ポイント。GetValidationErrors() によって呼び出されます。

上揃え

明示的なインターフェイスの実装  

  名前 説明
明示的なインターフェイス実装プライベート プロパティ IObjectContextAdapter.ObjectContext このコンテキストの基となる Entity Framework ObjectContext を返します。

上揃え

解説

DbContext は通常、モデルのルート エンティティの DbSet<TEntity> プロパティを含んでいる派生型で使用されます。 これらのセットは、派生クラスのインスタンスの作成時に自動的に初期化されます。 この動作は、SuppressDbSetInitializationAttribute 属性を派生コンテキスト クラス全体またはクラスの個別のプロパティに適用して変更できます。 コンテキストをサポートする Entity Data Model を指定する方法はいくつかあります。 Code First アプローチを使用する場合、派生コンテキストの DbSet<TEntity> プロパティを使用して、規約に従ってモデルがビルドされます。 このモデルを微調整するには、保護された OnModelCreating メソッドをオーバーライドします。 Model First アプローチで使用される、モデルに対するより細かい制御を行うには、DbCompiledModelDbModelBuilder から明示的に作成し、このモデルをいずれかの DbContext コンストラクターに渡します。 Database First アプローチまたは Model First アプローチを使用している場合、エンティティ デザイナーを使用して (または EDMX ファイルを作成して手動で) Entity Data Model を作成し、エンティティ接続文字列または EntityConnection オブジェクトを使用してこのモデルを指定することができます。 データベースへの接続 (データベース名を含む) を指定する方法はいくつかあります。 パラメーターなしの DbContext コンストラクターが派生コンテキストから呼び出された場合、app.config または web.config ファイルでの接続文字列の検出には派生コンテキストの名前が使用されます。 接続文字列が見つからない場合、Database クラスに登録された DefaultConnectionFactory にその名前が渡されます。 接続ファクトリは、既定の接続文字列でコンテキスト名をデータベース名として使用します (この既定の接続文字列は、 異なる DefaultConnectionFactory が登録されていない限り、ローカル コンピューター上の .\SQLEXPRESS を指します)。派生コンテキスト名を使用する代わりに、文字列を受け取る DbContext コンストラクターのいずれかに名前を渡すことで、接続名またはデータベース名を明示的に指定することもできます。 名前は、"name=myname" という形式で渡すこともできます。この場合は名前を構成ファイル内で指定する必要があり、検出されない場合は例外がスローされます。 app.config ファイルまたは web.config ファイルで指定する接続には、(特殊な Entity Framework 接続文字列ではなく) 標準のデータベース接続文字列を使用できることに注意してください。この場合、DbContext は Code First を使用します。 ただし、構成ファイルで指定する接続が特殊な Entity Framework 接続文字列である場合は、DbContext で Database/Model First が使用され、接続文字列で指定されたモデルが使用されます。 またデータベース名または接続名の代わりに既存の、または明示的に作成した DbConnection を使用することもできます。 DbContext から派生したクラスに DbModelBuilderVersionAttribute を適用することによって、モデルの作成時にコンテキストが使用する規約のバージョンを設定できます。 属性を適用しない場合は、最新バージョンの規約が使用されます。

スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

参照

参照

System.Data.Entity 名前空間