Freigeben über


NAVIGATE (Entity SQL)

Navigiert durch die zwischen Entitäten eingerichteten Beziehungen.

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

Argumente

  • instance-expresssion
    Eine Instanz einer Entität.
  • relationship-type
    Der Typname der Beziehung aus der CSDL-Datei (Conceptual Schema Definition Language, konzeptionelle Schemadefinitionssprache). Der relationship-type wird mit <Namespace>.<Beziehungstypname> qualifiziert.
  • to
    Das Ende der Beziehung.
  • from
    Der Anfang der Beziehung.

Rückgabewert

Wenn die Kardinalität des anderen Endes "1" beträgt, ist der Rückgabewert Ref<T>. Wenn die Kardinalität des anderen Endes "n" beträgt, ist der Rückgabewert Collection<Ref<T>>.

Hinweise

Beziehungen sind im Entitätsdatenmodell (EDM) Konstrukte der ersten Klasse. Sie können zwischen zwei oder mehreren Entitätstypen erstellt werden, und Benutzer können von der Entität am einen Ende durch die Beziehung zum anderen Ende navigieren. from und to sind bedingt optional, wenn es bei der Namensauflösung innerhalb der Beziehung keine Mehrdeutigkeiten gibt.

NAVIGATE ist im O- und im C-Raum gültig.

Ein Navigationskonstrukt hat die folgende allgemeine Form:

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

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 ist, 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 erzeugt der Navigationsausdruck in einer Abfrage der folgenden Form eine "Collection<Ref<Order>>".

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. Die Abfrage basiert 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 Gewusst wie: Ausführen einer Abfrage, die StructuralType-Ergebnisse zurückgibt (EntityClient).

  2. Übergeben Sie die folgende Abfrage als Argument zur ExecuteStructuralTypeQuery-Methode:

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

Dieses Beispiel führt zur folgenden Ausgabe:

AddressID: 1
AddressID: 2
AddressID: 3
AddressID: 4
AddressID: 5

Siehe auch

Verweis

NAVIGATE (Entity SQL)

Konzepte

Entity SQL-Referenz
Operator zur Navigation in Beziehungen (Entity SQL)
Navigationseigenschaften (EDM)