次の方法で共有


NAVIGATE (Entity SQL)

エンティティ間で確立されたリレーションシップを移動します。

構文

navigate(instance-expression, [relationship-type], [to-end [, from-end] ])

論争

instance-expression エンティティのインスタンス。

relationship-type 概念スキーマ定義言語 (CSDL) ファイルからのリレーションシップの型名。 relationship-typeは、<namespace>.< として修飾されます。リレーションシップの種類名>。

to リレーションシップの末尾。

from リレーションシップの先頭。

戻り値

to end のカーディナリティが 1 の場合、戻り値は Ref<T>。 to end のカーディナリティが n の場合、戻り値は Collection<Ref<T>>されます。

注釈

リレーションシップは、エンティティ データ モデル (EDM) の最上位のコンストラクトです。 2 つ以上のエンティティ型間でリレーションシップを確立でき、ユーザーはリレーションシップをある端 (エンティティ) から別のエンティティに移動できます。 from リレーションシップ内の名前解決にあいまいさがない場合、 to は条件付きで省略可能です。

NAVIGATE は O および C スペースで有効です。

ナビゲーション コンストラクトの一般的な形式は次のとおりです。

navigate(instance-expression, relationship-type, [ to-end [, from-end ] ] )

例えば次が挙げられます。

Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o

ここで、OrderCustomer は relationshipであり、Customer と Order はリレーションシップの to-end (顧客) と from-end (注文) です。 OrderCustomer が n:1 リレーションシップの場合、移動式の結果の型は Ref<Customer> です。

この式の単純な形式は次のとおりです。

Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o

同様に、次の形式のクエリでは、移動式によって Collection<Ref<Order>> が生成されます。

Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c

インスタンス式はエンティティ/ref 型である必要があります。

次の Entity SQL クエリでは、NAVIGATE 演算子を使用して、Address エンティティ型と SalesOrderHeader エンティティ型の間で確立されたリレーションシップを移動します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順に従います。

  1. 方法 : StructuralType の結果を返すクエリを実行する手順に従います。

  2. 次のクエリを引数として ExecuteStructuralTypeQuery メソッドに渡します。

SELECT address.AddressID, (SELECT VALUE DEREF(soh) 
FROM NAVIGATE(address, 
    AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) 
    AS soh)
FROM AdventureWorksEntities.Addresses AS address

こちらも参照ください