Partilhar via


Semântica de comparação (Entity SQL)

A execução de qualquer um dos seguintes operadores Entity SQL envolve a comparação de instâncias de tipo:

Comparação explícita

Operações de igualdade:

  • =

  • !=

Operações de encomenda:

  • <

  • <=

  • >

  • >=

Operações de anulabilidade:

  • É NULA:

  • NÃO É NULO

Distinção explícita

Distinção de igualdade:

  • DISTINTO

  • AGRUPAR POR

Distinção de ordenação:

  • ORDENAR POR

Distinção implícita

Definir operações e predicados (igualdade):

  • UNIÃO

  • INTERSECÇÃO

  • EXCETO

  • CONFIGURAÇÃO

  • SOBREPOSIÇÕES

Predicados do item (igualdade):

  • IN

Combinações suportadas

A tabela a seguir mostra todas as combinações suportadas de operadores de comparação para cada tipo de tipo:

Tipo =

!=
AGRUPAR POR

DISTINTO
UNIÃO

INTERSECT

EXCEPT

CONJUNTO

SOBREPOSIÇÕES
EM < <=

> >=
ORDENAR POR É NULA:

NÃO É NULO
Tipo de entidade Refª1 Todos os imóveis2 Todos os imóveis2 Todos os imóveis2 Lançamento3 Lançamento3 Refª1
Tipo complexo Lançamento3 Lançamento3 Lançamento3 Lançamento3 Lançamento3 Lançamento3 Lançamento3
Linha Todos os imóveis4 Todos os imóveis4 Todos os imóveis4 Lançamento3 Lançamento3 Todos os imóveis4 Lançamento3
Tipo primitivo Específico do fornecedor Específico do fornecedor Específico do fornecedor Específico do fornecedor Específico do fornecedor Específico do fornecedor Específico do fornecedor
Multiconjunto Lançamento3 Lançamento3 Lançamento3 Lançamento3 Lançamento3 Lançamento3 Lançamento3
Refª Sim 5 Sim 5 Sim 5 Sim 5 Lançamento Lançamento Sim 5
Associação

tipo
Lançamento3 Lançamento Lançamento Lançamento Lançamento3 Lançamento3 Lançamento3

As referências das instâncias de tipo de entidade dadas são implicitamente comparadas, conforme mostrado no exemplo a seguir:

SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
     JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != p2 OR p1 IS NULL

Uma instância de entidade não pode ser comparada a uma referência explícita. Se isso for tentado, uma exceção será lançada. Por exemplo, a consulta a seguir lançará uma exceção:

SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
     JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != REF(p2)

As propriedades de tipos complexos são achatadas antes de serem enviadas para a loja, para que se tornem comparáveis (desde que todas as suas propriedades sejam comparáveis). Ver também 4.

O tempo de execução do Entity Framework deteta o caso sem suporte e lança uma exceção significativa sem envolver o provedor/armazenamento.

É feita uma tentativa de comparar todas as propriedades. Se houver uma propriedade de um tipo não comparável, como text, ntext ou image, uma exceção de servidor poderá ser lançada.

Todos os elementos individuais das referências são comparados (isso inclui o nome do conjunto de entidades e todas as propriedades-chave do tipo de entidade).

Ver também