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

Executar alguns dos seguintes operadores de Entity SQL envolve a comparação de instâncias do tipo:

Comparação explícita

Operações de igualdade:

  • =

  • !=

Ordenando operações:

  • <

  • <=

  • >

  • >=

Operações de nulidade:

  • IS NULL

  • IS NOT NULL

Distinção explícita

Distinção de igualdade:

  • DISTINTO

  • GROUP BY

Classificação a distinção:

  • ORDER BY

Distinção implícita

Definir operações e predicados (igualdade):

  • UNION

  • INTERSECT

  • EXCEPT

  • SET

  • OVERLAPS

Predicados de item (igual):

  • IN

Combinações com suporte

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

Tipo =

!=
GROUP BY

DISTINCT
UNION

INTERSECT

EXCEPT

SET

OVERLAPS
IN <<=

>>=
ORDER BY É NULO

NÃO É NULO
Tipo de entidade Referência1 Todas as propriedades2 Todas as propriedades2 Todas as propriedades2 Gerar3 Gerar3 Referência1
Tipo complexo Gerar3 Gerar3 Gerar3 Gerar3 Gerar3 Gerar3 Gerar3
Linha Todas as propriedades4 Todas as propriedades4 Todas as propriedades4 Gerar3 Gerar3 Todas as propriedades4 Gerar3
Tipo primitivo Específica do provedor Específica do provedor Específica do provedor Específica do provedor Específica do provedor Específica do provedor Específica do provedor
Multiset Gerar3 Gerar3 Gerar3 Gerar3 Gerar3 Gerar3 Gerar3
Ref Sim5 Sim5 Sim5 Sim5 Throw Throw Sim5
Associação

tipo
Gerar3 Throw Throw Throw Gerar3 Gerar3 Gerar3

1Referências de instâncias dadas do tipo de entidade é comparada implicitamente, conforme mostrado no exemplo o 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 comparado a uma referência explícita. Se isso for tentada, uma exceção é lançada. Por exemplo, a seguinte consulta irá acionar uma exceção:

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

2As propriedades dos tipos complexos são aplainadas para fora antes de ser enviado para o armazenamento, o que ficam comparáveis (que todas as suas propriedades são comparáveis). Confira também 4.

3O tempo de execução de Entity Framework detecta os casos sem suporte e gerencie uma exceção sem significativo contratar o provedor/armazenamento.

4Uma tentativa é feita para comparar todas as propriedades. Se houver uma propriedade que é de um tipo não comparável, como texto, o ntext, ou imagem, uma exceção de servidor pode ser lançada.

5Todos os elementos individuais de referências são comparados (incluindo nome de conjunto de entidades e todas as propriedades principais do tipo de entidade).

Confira também