NAVIGATE (Entity SQL)
Navigiert durch die zwischen Entitäten eingerichteten Beziehungen.
Syntax
navigate(instance-expression, [relationship-type], [to-end [, from-end] ])
Argumente
instance-expression
Eine Instanz einer Entität.
relationship-type
Der Typname der Beziehung aus der CSDL-Datei (Conceptual Schema Definition Language, konzeptionelle Schemadefinitionssprache). Der relationship-type
ist als <namespace>.<Beziehungstypname> qualifiziert.
to
Das Ende der Beziehung.
from
Der Anfang der Beziehung.
Rückgabewert
Wenn die Kardinalität des "to"-Endes "1" beträgt, ist der Rückgabewert Ref<T>
. Wenn die Kardinalität des "to"-Endes "n" beträgt, ist der Rückgabewert Collection<Ref<T>>
.
Bemerkungen
Beziehungen sind erstklassige Konstrukte im Entity Data Model (EDM). Beziehungen können zwischen zwei oder mehr Entitätstypen festgelegt werden, und Benutzer können über die Beziehung von einem Ende (Entität) zu einem anderen navigieren. from
und to
sind bedingt optional, wenn es keine Mehrdeutigkeit in der Namensauflösung innerhalb der Beziehung gibt.
NAVIGATE ist im O- und im C-Raum gültig.
Ein Navigationskonstrukt hat die folgende allgemeine Form:
navigate(instance-expression
, relationship-type
, [ to-end
[, from-end
] ] )
Zum Beispiel:
Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o
Dabei ist "OrderCustomer" die relationship
, und "Customer" und "Order" sind das to-end
bzw. das from-end
der Beziehung. Wenn OrderCustomer eine n:1-Beziehung war, ist der Ergebnistyp des Navigationsausdrucks Ref<Customer>.
Eine einfachere Form dieses Ausdrucks ist die Folgende:
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
Entsprechend generiert der Navigationsausdruck in einer Abfrage der folgenden Form eine Auflistung<<Ref<Reihenfolge>>.
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
Der Instanzausdruck muss ein Entitäts-/Verweistyp sein.
Beispiel
In der folgenden Entity SQL-Abfrage wird mithilfe des NAVIGATE-Operators die zwischen den Entitätstypen "Address" und "SalesOrderHeader" bestehende Beziehung navigiert. Diese Abfrage beruht auf dem "AdventureWorks Sales"-Modell. Führen Sie folgende Schritte aus, um diese Abfrage zu kompilieren und auszuführen:
Verwenden Sie das Verfahren unter How to: Execute a Query that Returns StructuralType Results.
Übergeben Sie die folgende Abfrage als Argument an die
ExecuteStructuralTypeQuery
-Methode:
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address,
AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh)
FROM AdventureWorksEntities.Addresses AS address