NAVIGATE (Entiteit SQL)
Navigeert over de relatie die tussen entiteiten tot stand is gebracht.
Syntaxis
navigate(instance-expression, [relationship-type], [to-end [, from-end] ])
Argumenten
instance-expression
Een exemplaar van een entiteit.
relationship-type
De typenaam van de relatie, uit het CSDL-bestand (Conceptual Schema Definition Language). De relationship-type
naamruimte is gekwalificeerd als <naamruimte>.<naam> van relatietype.
to
Het einde van de relatie.
from
Het begin van de relatie.
Retourwaarde
Als de kardinaliteit van het einde 1 is, is Ref<T>
de retourwaarde. Als de kardinaliteit van het to-end n is, is Collection<Ref<T>>
de retourwaarde.
Opmerkingen
Relaties zijn eersteklas constructies in het Entity Data Model (EDM). Relaties kunnen tot stand worden gebracht tussen twee of meer entiteitstypen en gebruikers kunnen navigeren over de relatie van het ene uiteinde (entiteit) naar de andere. from
en to
voorwaardelijk optioneel zijn wanneer er geen dubbelzinnigheid is in naamomzetting binnen de relatie.
NAVIGATE is geldig in de O- en C-ruimte.
De algemene vorm van een navigatieconstructie is het volgende:
navigate(instance-expression
, relationship-type
[ [ to-end
, from-end
] ] )
Voorbeeld:
Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o
Waarbij OrderCustomer de relationship
relatie is en Klant en Order de to-end
(klant) en from-end
(order) van de relatie zijn. Als OrderCustomer een n:1-relatie was, is het resultaattype van de navigeerexpressie Ref<Customer>.
De eenvoudigere vorm van deze expressie is het volgende:
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
Op dezelfde manier produceert de navigate-expressie in een query van het volgende formulier een verzamelingsverwijzingsvolgorde<<>>.
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
De instantie-expressie moet een entiteit/ref-type zijn.
Opmerking
De volgende Entiteit SQL-query maakt gebruik van de NAVIGATE-operator om te navigeren over de relatie tussen de entiteitstypen Address en SalesOrderHeader. De query is gebaseerd op het AdventureWorks Sales Model. Voer de volgende stappen uit om deze query te compileren en uit te voeren:
Volg de procedure in Procedure: Voer een query uit die StructureleType-resultaten retourneert.
Geef de volgende query als argument door aan de
ExecuteStructuralTypeQuery
methode:
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address,
AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh)
FROM AdventureWorksEntities.Addresses AS address