NAVIGATE (Entity SQL)
Přechází vztah vytvořený mezi entitami.
Syntaxe
navigate(instance-expression, [relationship-type], [to-end [, from-end] ])
Argumenty
instance-expression
Instance entity.
relationship-type
Název typu relace ze souboru CSDL (Conceptual Schema Definition Language). Je relationship-type
kvalifikovaný jako <obor názvů>.<název> typu relace.
to
Konec relace.
from
Začátek relace.
Návratová hodnota
Pokud je kardinalita konce 1, návratová hodnota bude Ref<T>
. Pokud je kardinalita konce n, bude vrácená hodnota Collection<Ref<T>>
.
Poznámky
Relace jsou prvotřídní konstrukce v modelu Entity Data Model (EDM). Relace je možné navázat mezi dvěma nebo více typy entit a uživatelé můžou přecházet mezi relacemi z jednoho konce (entity) do druhého. from
a to
jsou podmíněně volitelné, pokud v rámci relace neexistuje nejednoznačnost překladu názvů.
Funkce NAVIGATE je platná v prostoru O a C.
Obecná forma konstruktoru navigace je následující:
navigate(instance-expression
, relationship-type
[ [ to-end
; from-end
] )
Příklad:
Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o
Kde OrderCustomer je relationship
a Zákazník a Objednávka jsou to-end
(zákazník) a from-end
(objednávka) vztahu. Pokud byl OrderCustomer relací n:1, pak typ výsledku výrazu navigate je Ref<Customer>.
Jednodušší forma tohoto výrazu je následující:
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
Podobně v dotazu následujícího formuláře by výraz navigate vytvořil pořadí>> odkazu<kolekce<.
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
Výraz instance musí být typem entity nebo odkazu.
Příklad
Následující dotaz Entity SQL používá operátor NAVIGATE k procházení relace vytvořené mezi typy entit Address a SalesOrderHeader. Dotaz je založený na prodejním modelu AdventureWorks. Chcete-li tento dotaz zkompilovat a spustit, postupujte takto:
Postupujte podle pokynů v části Postupy: Provedení dotazu, který vrací výsledky typu StructuralType.
Jako argument metody
ExecuteStructuralTypeQuery
předejte následující dotaz:
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address,
AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh)
FROM AdventureWorksEntities.Addresses AS address