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