Compartilhar via


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:

  1. Siga o procedimento em Como executar uma consulta que retorna resultados de StructuralType.

  2. 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

Confira também