NAVEGAR (Entity SQL)
Navega sobre a relação entre estabelecida entidades.
Sintaxe
navigate(instance-expression, [relationship-type], [to-end [, from-end] ])
Argumentos
instance-expression
Uma instância de uma entidade.
relationship-type
O nome do tipo da relação, o arquivo CSDL (linguagem de definição de esquema conceitual). O relationship-type
é qualificado como <namespace>.<nome do tipo de relação>.
to
O final da relação.
from
O início da relação.
Valor Retornado
Se a cardinalidade da finalizar é 1, o valor de retorno será Ref<T>
. Se a cardinalidade da finalizar é, no valor de retorno será Collection<Ref<T>>
.
Comentários
As relações são constructos de primeira classe no EDM (Modelo de Dados de Entidade). As relações podem ser estabelecidas entre dois ou mais tipos de entidade, e os usuários podem navegar sobre a relação de fim (entidade) para outra. from
e to
condicional são opcionais quando não há nenhuma ambiguidade na resolução de nomes dentro da relação.
NAVIGATE é válido no espaço de C e de 2.0.
O formulário geral de uma compilação de navegação é o seguinte:
navegue (instance-expression
, relationship-type
, [ to-end
, from-end
] [])
Por exemplo:
Select o.Id, navigate(o, OrderCustomer, Customer, Order)
From LOB.Orders as o
Onde OrderCustomer está relationship
, e o cliente e ordem são to-end
(cliente) e from-end
(ordem) da relação. Se OrderCustomer fosse uma relação n:1, o tipo do resultado da expressão de navegação seria Ref<Customer>.
A forma mais simples desta expressão é o seguinte:
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
De maneira semelhante, em uma consulta no formato seguir, a expressão de navegação produziria um Collection<Ref<Order>>.
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
A instância expressão deve ser um tipo de entidade/referência.
Exemplo
A seguinte consulta SQL Entity usa o operador NAVEGAR IN para navegar sobre o relacionamento estabelecido entre tipos de entidade de endereço e de SalesOrderHeader. A consulta é baseada no modelo de vendas AdventureWorks. Para compilar e executar essa consulta, siga estas etapas:
Siga o procedimento em Como executar uma consulta que retorna resultados de StructuralType.
Passe a consulta a seguir como um argumento para o 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