この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

DbContext クラス

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

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

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

public class DbContext : IDisposable, IObjectContextAdapter

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

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

  名前説明
パブリック プロパティ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ユーザーが追加されたエンティティと変更されたエンティティのみを検証する既定の動作をオーバーライドできるようにするための拡張ポイント。
パブリック メソッドToStringDbContext を表す文字列を返します。 (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) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
表示: