Dela via


NAVIGERA (entitets-SQL)

Navigerar över relationen mellan entiteter.

Syntax

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

Argument

instance-expression En instans av en entitet.

relationship-type Typnamnet för relationen, från csdl-filen (conceptual schema definition language). relationship-type är kvalificerat som <namnområde>.<relationstypsnamn>.

to Slutet på relationen.

from Början av relationen.

Returvärde

Om kardinaliteten för till-slutet är 1 blir Ref<T>returvärdet . Om kardinaliteten för till-slutet är n blir Collection<Ref<T>>returvärdet .

Kommentarer

Relationer är förstklassiga konstruktioner i entitetsdatamodellen (EDM). Relationer kan upprättas mellan två eller flera entitetstyper och användarna kan navigera över relationen från ena änden (entiteten) till en annan. from och to är villkorligt valfria när det inte finns någon tvetydighet i namnmatchningen i relationen.

NAVIGATE är giltigt i O- och C-blanksteg.

Den allmänna formen av en navigeringskonstruktion är följande:

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

Till exempel:

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

Där OrderCustomer är relationship, och Kund och Order är to-end relationens (kund) och from-end (beställning). Om OrderCustomer var en n:1-relation är resultattypen för navigeringsuttrycket Referenskund<>.

Den enklare formen av det här uttrycket är följande:

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

I en fråga i följande formulär skulle navigeringsuttrycket på samma sätt skapa en samlings<ref-order<>>.

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

Instansuttrycket måste vara en entitet/referenstyp.

Exempel

Följande entitets-SQL-fråga använder operatorn NAVIGATE för att navigera över relationen mellan entitetstyperna Address och SalesOrderHeader. Frågan baseras på AdventureWorks försäljningsmodell. Följ dessa steg för att kompilera och köra den här frågan:

  1. Följ proceduren i Så här kör du en fråga som returnerar StructuralType-resultat.

  2. Skicka följande fråga som ett argument till ExecuteStructuralTypeQuery metoden:

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

Se även