Sdílet prostřednictvím


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 relationshipa 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:

  1. Postupujte podle pokynů v části Postupy: Provedení dotazu, který vrací výsledky typu StructuralType.

  2. 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

Viz také