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:
DISTINTOS
GROUP BY
Distinção de ordenação:
- ORDER BY
Distinção implícita
Definir operações e predicados (igualdade):
UNION
INTERSECT
EXCETO
SET
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 | = != |
GRUPO POR DISTINTOS |
UNIÃO CRUZAMENTO EXCETO SET SOBREPOSIÇÕES |
EM | <<= >>= |
ENCOMENDAR 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 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 |
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 |
1 As referências das instâncias de tipo de entidade dadas são implicitamente comparadas, como 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)
2 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.
3 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.
4 Tenta-se 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.
5 Todos os elementos individuais das referências são comparados (isto inclui o nome do conjunto de entidades e todas as principais propriedades do tipo de entidade).