Partilhar via


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:

  1. Siga o procedimento em Como: Executar uma consulta que retorna resultados StructuralType.

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

Consulte também