Compartir a través de


NAVIGATE (Entity SQL)

Navega por la relación establecida entre entidades.

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

Argumentos

  • instance-expresssion
    Instancia de una entidad.
  • relationship-type
    Nombre de tipo de la relación, del archivo de lenguaje de definición de esquemas conceptuales (CSDL). relationship-type se califica como <espacio de nombres>.<nombre de tipo de relación>.
  • to
    Final de la relación.
  • from
    Comienzo de la relación.

Valor devuelto

Si la cardinalidad del extremo final es 1, el valor devuelto será Ref<T>. Si la cardinalidad del extremo final es n, el valor devuelto será Collection<Ref<T>>.

Comentarios

Las relaciones son estructuras de primera clase en Entity Data Model (EDM). Se pueden establecer relaciones entre dos o más tipos de entidad y los usuarios pueden navegar por la relación desde un extremo (entidad) hasta otro. Los parámetros from y to son condicionalmente opcionales cuando no hay ambigüedades en la resolución de nombres dentro de la relación.

NAVIGATE es válido en espacios O y C.

La forma general de una estructura de navegación es la siguiente:

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

Por ejemplo:

Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o

Donde OrderCustomer es el valor de relationship, y Customer y Order son los valores de to-end (cliente) y from-end (pedido) de la relación. Si OrderCustomer es una relación de n a 1, el tipo de resultado de la expresión navigate es Ref<Customer>.

Lo forma más simple de esta expresión es la siguiente:

Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o

De igual modo, en una consulta de la forma siguiente, la expresión navigate produce un resultado Collection<Ref<Order>>.

Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c

El valor de instance-expression debe ser de tipo entidad/referencia.

Ejemplo

La consulta de Entity SQL siguiente utiliza el operador NAVIGATE para navegar por la relación establecida entre los tipos de entidad Address y SalesOrderHeader. La consulta se basa en el modelo AdventureWorks Sales. Para compilar y ejecutar esta consulta, siga estos pasos:

  1. Siga el procedimiento de Cómo ejecutar una consulta que devuelve resultados StructuralType (EntityClient).

  2. Pase la consulta siguiente como argumento al método ExecuteStructuralTypeQuery:

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

Este ejemplo genera el siguiente resultado:

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

Vea también

Referencia

NAVIGATE (Entity SQL)

Conceptos

Referencia de Entity SQL
Operador de navegación por relaciones (Entity SQL)
Propiedades de navegación (EDM)