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 アプローチで使用される、モデルに対するより細かい制御を行うには、DbCompiledModel を DbModelBuilder から明示的に作成し、このモデルをいずれかの 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) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。