Entity Framework 用の EntityClient プロバイダー
EntityClient プロバイダーは、概念モデルで記述されているデータにアクセスするために Entity Framework アプリケーションで使用するデータ プロバイダーです。 概念モデルについては、「モデリングとマッピング」をご覧ください。 EntityClient は、他の .NET Framework データ プロバイダーを使用してデータ ソースにアクセスします。 たとえば、EntityClient は、SQL Server データベースにアクセスするときは .NET Framework Data Provider for SQL Server (SqlClient) を使用します。 SqlClient プロバイダーについては、「Entity Framework 用 SqlClient」をご覧ください。 EntityClient プロバイダーは System.Data.EntityClient 名前空間で実装されます。
接続の管理
Entity Framework は、基になるデータ プロバイダーとリレーショナル データベースへの EntityConnection を提供することにより、ストレージ固有の ADO.NET データ プロバイダーを基にして構築されます。 EntityConnection オブジェクトを構築するには、必要なモデルとマッピング、さらにストレージ固有のデータ プロバイダー名と接続文字列を含んだ一連のメタデータを参照する必要があります。 EntityConnection を確立すると、概念モデルから生成されたクラスを使用してエンティティにアクセスできます。
app.config ファイルの接続文字列を指定できます。
System.Data.EntityClient には、EntityConnectionStringBuilder クラスも含まれています。 このクラスを使用すると、開発者はこのクラスのプロパティおよびメソッドを使用することによって、正しい構文の接続文字列をプログラムで作成し、既存の接続文字列の解析や再作成を行うことができます。
クエリの作成
Entity SQL 言語は、エンティティの概念スキーマを直接操作し、継承やリレーションシップなどの Entity Data Model 概念をサポートする、ストレージの影響を受けない SQL の言語です。 エンティティ モデルに対して Entity SQL コマンドを実行するには、EntityCommand クラスを使用します。 EntityCommand オブジェクトを構築する場合は、ストアド プロシージャ名またはクエリ テキストを指定できます。 Entity Framework では、ストレージ固有のデータ プロバイダーとの連携により、汎用的な Entity SQL がストレージ固有のクエリに変換されます。 Entity SQL のクエリの記述について詳しくは、「Entity SQL 言語」をご覧ください。
次の例では、EntityCommand オブジェクトを作成し、Entity SQL クエリのテキストを EntityCommand.CommandText プロパティに割り当てます。 この Entity SQL クエリでは、表示価格で並べ替えた製品を概念モデルに要求します。 次のコードでは、ストレージ モデルが認識されません。
EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT VALUE p
FROM AdventureWorksEntities.Product AS p
ORDER BY p.ListPrice";
クエリの実行
クエリを実行すると、そのクエリが解析され、正規コマンド ツリーに変換されます。 すべての後続の処理は、コマンド ツリーで行われます。 コマンド ツリーは、System.Data.EntityClient と、System.Data.SqlClient などの基になる .NET Framework データ プロバイダーとの間の通信手段です。
概念モデルに対する EntityDataReader の実行結果は、EntityCommand によって公開されます。 EntityDataReader を返すコマンドを実行するには、ExecuteReader を呼び出します。 EntityDataReader は、構造化されたさまざまな結果を記述するための IExtendedDataRecord を実装します。
トランザクションの管理
Entity Framework では、自動トランザクションと明示的トランザクションという 2 つの使用方法があります。 自動トランザクションでは System.Transactions 名前空間を使用し、明示的トランザクションでは EntityTransaction クラスを使用します。
概念モデルによって公開されたデータを更新するには、「方法: Entity Framework のトランザクションを管理する」をご覧ください。
このセクションの内容
方法: PrimitiveType の結果を返すクエリを実行する
方法: StructuralType の結果を返すクエリを実行する
方法: EntityCommand を使用してパラメーター化 Entity SQL クエリを実行する
方法: EntityCommand を使用してパラメーター化されたストアド プロシージャを実行する
方法: Navigate 演算子でリレーションシップをナビゲートする