NAVIGATE (Entity SQL)

Navega por la relación establecida entre entidades.

Sintaxis

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

Argumentos

instance-expression 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>>.

Observaciones

Las relaciones son construcciones 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 en la relación de un extremo (entidad) al otro. from y to son condicionalmente opcionales cuando no hay ambigüedad 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-expression, 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 era una relación n: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

Del mismo modo, en una consulta del siguiente formulario, la expresión navigate generaría una clase 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 How to: Execute a Query that Returns StructuralType Results.

  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.Addresses AS address

Consulte también