Compartilhar via


NAVIGATE (Entity 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 relação.

to O fim da relação.

from O início da relação.

Valor de retorno

Se a cardinalidade do final for 1, o valor retornado será Ref<T>. Se a cardinalidade do final for n, o valor retornado será Collection<Ref<T>>.

Observações

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 pela 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 de O e C.

A forma geral de um constructo de navegação é a seguinte:

navigate(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 relationshipcliente e o pedido são o to-end (cliente) e from-end (pedido) da relação. Se OrderCustomer era uma relação n:1, o tipo de resultado da expressão de navegação é Ref<Customer>.

A forma mais simples dessa expressão é a seguinte:

Select o.Id, navigate(o, OrderCustomer)
From LOB.Orders as o

Da mesma forma, em uma consulta do formulário a seguir, a expressão de navegação produziria uma ordem>> ref<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 SQL de entidade a seguir usa o operador NAVIGATE para navegar sobre a relação estabelecida entre os tipos de entidade Address e SalesOrderHeader. A consulta é baseada no Modelo de Vendas adventureworks. Para compilar e executar essa consulta, siga estas etapas:

  1. Siga o procedimento em How to: Execute a Query that Returns StructuralType Results.

  2. Passe a consulta a seguir 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

Consulte também