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:
Siga el procedimiento de Cómo ejecutar una consulta que devuelve resultados StructuralType (EntityClient).
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
Conceptos
Referencia de Entity SQL
Operador de navegación por relaciones (Entity SQL)
Propiedades de navegación (EDM)