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:
Siga el procedimiento de How to: Execute a Query that Returns StructuralType Results.
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