Navigate 演算子でリレーションシップをナビゲートする方法 (EntityClient)
このトピックでは、EntityCommand を使用して Entity Data Model に対してコマンドを実行する方法、および EntityDataReader を使用して RefType 結果を取得する方法の例を示します。
この例のコードを実行するには
AdventureWorks Sales Model をプロジェクトに追加し、Entity Framework を使用するようにプロジェクトを構成します。これを行うには、次のいずれかの操作を実行します。
Entity Data Model ツールをインストールしている場合は、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」の手順を実行します。
ツールをインストールしていない場合は、「Entity Framework プロジェクトを手動で構成する方法」および「Entity Data Model を手動で定義する方法 (Entity Framework)」の手順を実行します。
アプリケーションのコード ページで、次の using ステートメント (Visual Basic の場合は Imports) を追加します。
Imports System Imports System.Collections.Generic Imports System.Collections Imports System.Data.Common Imports System.Data Imports System.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm Imports System.IO ' Add AdventureWorksModel prepended with the root namespace for the project. 'Imports ProjectName.AdventureWorksModel
using System; using System.Collections.Generic; using System.Collections; using System.Data.Common; using System.Data; using System.IO; using System.Data.SqlClient; using System.Data.EntityClient; using AdventureWorksModel; using System.Data.Metadata.Edm;
例
次の例では、Entity SQL で NAVIGATE (Entity SQL) 演算子を使用してリレーションシップをナビゲートする方法を示しています。Navigate 演算子は、エンティティのインスタンス、リレーションシップの種類、リレーションシップの終端エンティティ、および、リレーションシップの開始エンティティをパラメータとして受け取ります。Navigate 演算子には、エンティティのインスタンスとリレーションシップの種類だけを受け取る、より単純な形態もあります。次の例は、より単純な形態の Navigate 演算子の使用法を示しています。
Using connection As EntityConnection = New EntityConnection("name=AdventureWorksEntities")
connection.Open()
Try
' Create an EntityCommand and pass the connection object
' and Entity SQL query to its constructor.
Using cmd As EntityCommand = connection.CreateCommand()
' Create an Entity SQL query.
Dim esqlQuery As String = "SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM " & _
"NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) " & _
"AS soh) FROM AdventureWorksEntities.Address AS address"
cmd.CommandText = esqlQuery
' Execute the command.
Using reader As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading.
Do While reader.Read
Console.WriteLine(reader.Item("AddressID"))
Loop
End Using
End Using
Catch ex As EntityException
Console.WriteLine(ex.ToString())
End Try
connection.Close()
End Using
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
try
{
// Create an EntityCommand.
using (EntityCommand cmd = conn.CreateCommand())
{
// Create an Entity SQL query.
string esqlQuery =
@"SELECT address.AddressID, (SELECT VALUE DEREF(soh) FROM
NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh) FROM AdventureWorksEntities.Address AS address";
cmd.CommandText = esqlQuery;
// Execute the command.
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading.
while (rdr.Read())
{
Console.WriteLine(rdr["AddressID"]);
}
}
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
参照
概念
その他のリソース
EntityClient の使用 (Entity Framework タスク)
How to: Execute an Entity SQL Query Using EntityCommand