NAVIGATE (Entidade SQL)
Navega sobre a relação estabelecida entre 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, do arquivo CSDL (linguagem de definição de esquema conceitual). O relationship-type
é qualificado como <namespace>.<nome> do tipo de relacionamento.
to
O fim da relação.
from
O início da relação.
Devolver Valor
Se a cardinalidade do final for 1, o valor de retorno será Ref<T>
. Se a cardinalidade do fim for n, o valor de retorno será Collection<Ref<T>>
.
Observações
Os relacionamentos são construções de primeira classe no Modelo de Dados de Entidade (EDM). As relações podem ser estabelecidas entre dois ou mais tipos de entidade, e os usuários podem navegar sobre a relação de uma extremidade (entidade) para outra. from
e to
são condicionalmente opcionais quando não há ambiguidade na resolução de nomes dentro da relação.
NAVIGATE é válido no espaço O e C.
A forma geral de uma construção de navegação é a seguinte:
navegar(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 é o relationship
, e Cliente e Order são o to-end
(cliente) e from-end
(ordem) da relação. Se OrderCustomer era uma relação n:1, o tipo de resultado da expressão navigate é Ref<Customer>.
A forma mais simples desta expressão é a seguinte:
Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o
Da mesma forma, em uma consulta do seguinte formulário, A expressão navigate produziria uma Ordem de Referência de>> Coleção.<<
Select c.Id, navigate(c, OrderCustomer, Order, Customer)
From LOB.Customers as c
A expressão de instância deve ser um tipo de entidade/ref.
Exemplo
A consulta Entity SQL a seguir usa o operador NAVIGATE para navegar pela relação estabelecida entre os tipos de entidade Address e SalesOrderHeader. A consulta é baseada no Modelo de Vendas AdventureWorks. Para compilar e executar esta consulta, siga estes passos:
Siga o procedimento em Como: Executar uma consulta que retorna resultados StructuralType.
Passe a seguinte consulta como um argumento para o
ExecuteStructuralTypeQuery
método:
SELECT address.AddressID, (SELECT VALUE DEREF(soh)
FROM NAVIGATE(address,
AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID)
AS soh)
FROM AdventureWorksEntities.Addresses AS address