Delen via


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

  1. Volg de procedure in Procedure: Voer een query uit die StructureleType-resultaten retourneert.

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

Zie ook