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 "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>>.

Hinweise

Beziehungen sind im Entity Data Model (EDM) Konstrukte der ersten Klasse. 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-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 durch, 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 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

Verweis

NAVIGATE (Entity SQL)

Konzepte

Entity SQL-Referenz