Udostępnij za pośrednictwem


NAVIGATE (Entity SQL)

Przechodzi przez relację ustanowioną między jednostkami.

Składnia

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

Argumenty

instance-expression Wystąpienie jednostki.

relationship-type Nazwa typu relacji z pliku języka definicji schematu koncepcyjnego (CSDL). Element relationship-type jest kwalifikowany jako <przestrzeń nazw>.<nazwa> typu relacji.

to Koniec relacji.

from Początek relacji.

Wartość zwracana

Jeśli kardynalność elementu do końca wynosi 1, zwracana wartość to Ref<T>. Jeśli kardynalność elementu to n, zwracana wartość to Collection<Ref<T>>.

Uwagi

Relacje to konstrukcje pierwszej klasy w modelu danych jednostki (EDM). Relacje można ustanowić między co najmniej dwoma typami jednostek, a użytkownicy mogą przechodzić przez relację z jednego końca (jednostki) do innej. from i to są warunkowo opcjonalne, gdy nie ma niejednoznaczności w rozpoznawaniu nazw w relacji.

FUNKCJA NAVIGATE jest prawidłowa w obszarze O i C.

Ogólna forma konstrukcji nawigacji jest następująca:

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

Na przykład:

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

Gdzie OrderCustomer to relationship, a klient i zamówienie to to-end (klient) i from-end (kolejność) relacji. Jeśli parametr OrderCustomer był relacją n:1, typ wyniku wyrażenia nawigacji to Ref<Customer>.

Prostsza forma tego wyrażenia jest następująca:

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

Podobnie w zapytaniu w poniższym formularzu wyrażenie nawigowania spowodowałoby wygenerowanie zamówienia>> ref<kolekcji<.

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

Wyrażenie-wystąpienia musi być typem jednostki/ref.

Przykład

Następujące zapytanie Entity SQL używa operatora NAVIGATE, aby przejść przez relację ustanowioną między typami jednostek Address i SalesOrderHeader. Zapytanie jest oparte na modelu AdventureWorks Sales. Aby skompilować i uruchomić to zapytanie, wykonaj następujące kroki:

  1. Postępuj zgodnie z procedurą w temacie Instrukcje: wykonywanie zapytania zwracającego wyniki StructuralType.

  2. Przekaż następujące zapytanie jako argument do ExecuteStructuralTypeQuery metody :

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

Zobacz też