Freigeben über


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:

  1. Verwenden Sie das Verfahren unter How to: Execute a Query that Returns StructuralType Results.

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

Siehe auch