Navigate 演算子でリレーションシップをナビゲートする方法 (EntityClient)
このトピックでは、EntityCommand オブジェクトを使用して概念モデルに対してコマンドを実行する方法と、EntityDataReader を使用して RefType の結果を取得する方法を示します。
この例のコードを実行するには
AdventureWorks Sales Model をプロジェクトに追加して、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.IO Imports System.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm
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 System.Data.Metadata.Edm;
例
次の例では、Entity SQL で NAVIGATE (Entity SQL) 演算子を使用してリレーションシップをナビゲートする方法を示しています。 Navigate 演算子は、エンティティのインスタンス、リレーションシップの種類、リレーションシップの終端エンティティ、および、リレーションシップの開始エンティティをパラメーターとして受け取ります。 オプションとして、エンティティのインスタンスとリレーションシップ型だけを Navigate 演算子に渡すこともできます。
Using conn As New EntityConnection("name=AdventureWorksEntities")
conn.Open()
' Create an EntityCommand.
Using cmd As EntityCommand = conn.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.Addresses AS address"
cmd.CommandText = esqlQuery
' Execute the command.
Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
' Start reading.
While rdr.Read()
Console.WriteLine(rdr("AddressID"))
End While
End Using
End Using
conn.Close()
End Using
using (EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities"))
{
conn.Open();
// 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.Addresses AS address";
cmd.CommandText = esqlQuery;
// Execute the command.
using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
{
// Start reading.
while (rdr.Read())
{
Console.WriteLine(rdr["AddressID"]);
}
}
}
conn.Close();
}