DbContext クラス

定義

DbContext インスタンスは、作業単位とリポジトリパターンの組み合わせを表します。これにより、データベースからクエリを実行し、その変更をまとめて1つの単位としてストアに書き戻すために使用できます。 DbContext は、概念的には ObjectContext に似ています。

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification="Casing is intentional")]
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
type DbContext = class
    interface IDisposable
    interface IObjectContextAdapter
Public Class DbContext
Implements IDisposable, IObjectContextAdapter
継承
DbContext
派生
属性
実装

注釈

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

コンストラクター

DbContext()

規約を使用して接続先のデータベースの名前を作成する新しいコンテキスト インスタンスを構築します。 規則に従った名前は、派生コンテキストクラスの完全な名前 (名前空間 + クラス名) です。 このを使用して接続を作成する方法については、クラスの解説を参照してください。

DbContext(DbCompiledModel)

規約を使用して接続先のデータベースの名前を作成する新しいコンテキスト インスタンスを構築し、指定されたモデルからそのインスタンスを初期化します。 規則に従った名前は、派生コンテキストクラスの完全な名前 (名前空間 + クラス名) です。 このを使用して接続を作成する方法については、クラスの解説を参照してください。

DbContext(DbConnection, Boolean)

既存の接続を使用してデータベースに接続する新しいコンテキスト インスタンスを構築します。 が false の場合、コンテキストが破棄されても接続は破棄されません contextOwnsConnection

DbContext(DbConnection, DbCompiledModel, Boolean)

既存の接続を使用してデータベースに接続する新しいコンテキスト インスタンスを構築し、指定されたモデルからそのインスタンスを初期化します。 が false の場合、コンテキストが破棄されても接続は破棄されません contextOwnsConnection

DbContext(ObjectContext, Boolean)

既存の ObjectContext の周囲に新しいコンテキストインスタンスを構築します。

DbContext(ObjectContext, Boolean)

既存の ObjectContext の周囲に新しいコンテキストインスタンスを構築します。 新しいコンテキストでラップする既存の ObjectContext。Trueに設定すると、dbcontext が破棄されるときに ObjectContext が破棄されます。それ以外の場合は、呼び出し元が接続を破棄する必要があります。

DbContext(String)

指定された文字列を接続先のデータベースの名前または接続文字列として使用する新しいコンテキスト インスタンスを構築します。 このを使用して接続を作成する方法については、クラスの解説を参照してください。

DbContext(String, DbCompiledModel)

指定された文字列を接続先のデータベースの名前または接続文字列として使用する新しいコンテキスト インスタンスを構築し、指定されたモデルからそのインスタンスを初期化します。 このを使用して接続を作成する方法については、クラスの解説を参照してください。

プロパティ

ChangeTracker

エンティティの変更追跡を処理するコンテキストの機能にアクセスできます。

Configuration

コンテキストの構成オプションにアクセスできます。

Database

基になるデータベースの作成/削除/存在確認を可能にする、このコンテキストのデータベースインスタンスを作成します。

メソッド

Dispose()

保護された Dispose メソッドを呼び出します。

Dispose(Boolean)

コンテキストを破棄します。 また、基になるが ObjectContext このコンテキストによって作成された場合、またはこのコンテキストの作成時に所有権がこのコンテキストに渡された場合も破棄されます。 このコンテキスト DbConnection によって作成された場合、またはこのコンテキストの作成時に所有権がこのコンテキストに渡された場合は、データベース (オブジェクト) への接続も破棄されます。

Entry(Object)

エンティティに DbEntityEntry 関する情報へのアクセスを提供し、エンティティに対してアクションを実行する権限を提供する、指定されたエンティティのオブジェクトを取得します。

Entry<TEntity>(TEntity)

エンティティに DbEntityEntry<TEntity> 関する情報へのアクセスを提供し、エンティティに対してアクションを実行する権限を提供する、指定されたエンティティのオブジェクトを取得します。

Equals(Object)
GetHashCode()

Serves as the default hash function.

GetType()

Gets the Type of the current instance.

GetValidationErrors()

追跡対象のエンティティを検証し、検証結果を格納しているのコレクションを返し DbEntityValidationResult ます。

OnModelCreating(DbModelBuilder)

このメソッドは、派生コンテキストのモデルの初期化が完了したが、まだロックダウンされていないときに呼び出され、コンテキストの初期化に使用されます。 このメソッドの既定の実装では何も行われませんが、モデルがロックダウンされる前にさらに設定できるように派生クラスでオーバーライドできます。

SaveChanges()

このコンテキストで行われたすべての変更を基になるデータベースに保存します。

SaveChangesAsync()

このコンテキストに加えられたすべての変更を、基になるデータベースに非同期に保存します。

SaveChangesAsync(CancellationToken)

このコンテキストに加えられたすべての変更を、基になるデータベースに非同期に保存します。

Set(Type)

DbSetコンテキストおよび基になるストア内の指定された型のエンティティにアクセスするための非ジェネリックインスタンスを返します。

Set<TEntity>()

DbSet<TEntity>コンテキストおよび基になるストア内の指定された型のエンティティにアクセスするためのインスタンスを返します。

ShouldValidateEntity(DbEntityEntry)

ユーザーが追加されたエンティティと変更されたエンティティのみを検証する既定の動作をオーバーライドできるようにするための拡張ポイント。

ToString()

Returns a string that represents the current object.

ValidateEntity(DbEntityEntry, IDictionary<Object,Object>)

ユーザーがエンティティの検証をカスタマイズしたり、検証結果にフィルターをかけて除外したりできるようにするための拡張ポイント。 GetValidationErrors() によって呼び出されます。

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

IObjectContextAdapter.ObjectContext

このコンテキストの基になる ObjectContext Entity Framework を返します。

適用対象