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:
Postępuj zgodnie z procedurą w temacie Instrukcje: wykonywanie zapytania zwracającego wyniki StructuralType.
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