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:
Följ proceduren i Så här kör du en fråga som returnerar StructuralType-resultat.
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