Semantica di confronto (Entity SQL)
L'esecuzione di uno degli operatori Entity SQL seguenti comporta un confronto tra istanze di tipi:
Confronto esplicito
Operazioni di uguaglianza:
=
!=
Operazioni di ordinamento:
<
<=
>
>=
Operazioni di impostazione del supporto dei valori Null:
IS NULL
IS NOT NULL
Distinzione esplicita
Distinzione di uguaglianza:
DISTINCT
GROUP BY
Distinzione di ordinamento:
- ORDER BY
Distinzione implicita
Predicati e operazioni sui set (uguaglianza):
UNION
INTERSECT
EXCEPT
SET
OVERLAPS
Predicati degli elementi (uguaglianza):
- IN
Combinazioni supportate
Nella tabella seguente sono illustrate tutte le combinazioni supportate di operatori di confronto per ognuno dei tipi:
Tipo |
= != |
GROUP BY DISTINCT |
UNION INTERSECT EXCEPT SET OVERLAPS |
IN |
< <= > >= |
ORDER BY |
IS NULL IS NOT NULL |
Tipo di entità |
Rif1 |
Tutte le proprietà2 |
Tutte le proprietà2 |
Tutte le proprietà2 |
Eccezione generata3 |
Eccezione generata3 |
Rif1 |
Tipo complesso |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Riga |
Tutte le proprietà4 |
Tutte le proprietà4 |
Tutte le proprietà4 |
Eccezione generata3 |
Eccezione generata3 |
Tutte le proprietà4 |
Eccezione generata3 |
Tipo primitivo |
Specifico del provider |
Specifico del provider |
Specifico del provider |
Specifico del provider |
Specifico del provider |
Specifico del provider |
Specifico del provider |
Multiset |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
Rif |
Sì5 |
Sì5 |
Sì5 |
Sì5 |
Throw |
Throw |
Sì5 |
Tipo di associazione |
Eccezione generata3 |
Throw |
Throw |
Throw |
Eccezione generata3 |
Eccezione generata3 |
Eccezione generata3 |
1I riferimenti delle istanze del tipo di entità specificato vengono confrontati in modo implicito, come illustrato nell'esempio seguente:
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != p2 OR p1 IS NULL
Un'istanza di entità non può essere confrontata con un riferimento esplicito. Se viene eseguito un tentativo di questo tipo, viene generata un'eccezione. La query seguente comporta, ad esempio, la generazione di un'eccezione:
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != REF(p2)
2Le proprietà dei tipi complessi sono impostate come bidimensionali prima di essere inviate all'archivio, pertanto è possibile eseguirne il confronto (a condizione che tutte le relative proprietà possano essere confrontate). Vedere anche 4.
3Il runtime di Entity Framework rileva il caso non supportato e genera un'eccezione significativa senza ricorrere al provider o all'archivio.
4Viene eseguito un tentativo di confrontare tutte le proprietà. Se è presente una proprietà che non è possibile confrontare, ad esempio un tipo text, ntext o image, viene generata un'eccezione nel server.
5Vengono confrontati tutti i singoli elementi dei riferimenti (inclusi il nome del set di entità e tutte le proprietà chiave del tipo di entità).