Compartilhar via


Semântica de comparação (SQL da Entidade)

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

Comparação explícita

Operações de igualdade:

  • =

  • !=

Operações de ordenação:

  • <

  • <=

  • >

  • >=

Operações de nulidade:

  • É NULO

  • NÃO É NULO

Distinção explícita

Distinção de igualdade:

  • DISTINCT

  • AGRUPAR POR

Distinção de ordenação:

  • ORDENAR POR

Distinção implícita

Definir operações e predicados (igualdade):

  • UNIÃO

  • CRUZAR-SE

  • EXCETO

  • SET

  • SOBREPOSIÇÕES

Predicados de item (igualdade):

  • IN

Combinações com suporte

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

Tipo =

!=
AGRUPAR POR

DISTINÇÃO
UNIÃO

INTERSECT

EXCEPT

SET

SOBREPOSIÇÕES
IN < <=

> >=
ORDER BY IS NULL

NÃO É NULO
Tipo de entidade Ref1 Todas as propriedades2 Todas as propriedades2 Todas as propriedades2 Gerar3 Gerar3 Ref1
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ífico do provedor Específico do provedor Específico do provedor Específico do provedor Específico do provedor Específico do provedor Específico 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

1As referências das instâncias de tipo de entidade fornecidas são comparadas implicitamente, 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á gerada. Por exemplo, a consulta a seguir gerará uma exceção:

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

algarismoAs propriedades de tipos complexos são niveladas antes de serem enviadas para o repositório, de modo que se tornem comparáveis (desde que todas as suas propriedades sejam comparáveis). Veja também 4.

3O runtime do Entity Framework detecta o caso sem suporte e gera uma exceção significativa sem envolver o provedor/repositório.

4É feita uma tentativa de comparar todas as propriedades. Se houver uma propriedade que seja de um tipo não comparável, como texto, ntext ou imagem, uma exceção de servidor poderá ser gerada.

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

Consulte também