Share via


NAVIGATE (Entity SQL)

在建立於實體之間的關聯性上巡覽。

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

引數

  • instance-expresssion
    實體的執行個體。
  • relationship-type
    關聯性的型別名稱,來自概念結構定義語言 (CSDL) 檔案。relationship-type 被限定為 <namespace>.<relationship type name>。
  • to
    關聯性的結束。
  • from
    關聯性的開始。

傳回值

如果結束端的基數為 1,傳回值將會是 Ref<T>。如果結束端的基數為 n,傳回值將會是 Collection<Ref<T>>

備註

關聯性是 實體資料模型 (EDM) 中的第一類建構。關聯性可以可以建立在兩個以上實體類型之間,使用者可以在關聯性上從一個端點 (實體) 巡覽到另一個端點。如果關聯性中的名稱解析沒有模稜兩可的問題,from 和 to 可以是條件式選擇性。

NAVIGATE 在 O 和 C 空間中有效。

巡覽建構的一般形式如下:

navigate(instance-expresssion, 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

此執行個體運算式必須是實體/參考型別。

範例

以下 Entity SQL 查詢使用 NAVIGATE 運算子在建立於 Address 和 SalesOrderHeader 實體類型之間的關聯性上巡覽。此查詢是以 AdventureWorks Sales Model 為依據。若要編譯及執行此查詢,請遵循以下步驟:

  1. 按照 HOW TO:執行可傳回 StructuralType 結果的查詢 (EntityClient)中的程序進行。

  2. 將下列查詢當成引數傳遞至 ExecuteStructuralTypeQuery 方法:

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

這個範例會產生下列輸出:

AddressID: 1
AddressID: 2
AddressID: 3
AddressID: 4
AddressID: 5

另請參閱

參考

NAVIGATE (Entity SQL)

概念

Entity SQL 參考
關聯性巡覽運算子 (Entity SQL)
導覽屬性 (EDM)