Condividi tramite


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 (NON È 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:

Type =

!=
GROUP BY

DISTINCT
UNION

INTERSECT

EXCEPT

SET

OVERLAPS
IN <<=

>>=
ORDER BY IS NULL

IS NOT NULL
Tipo di entità Ref1 Tutte le proprietà2 Tutte le proprietà2 Tutte le proprietà2 Genera3 Genera3 Ref1
Tipo complesso Genera3 Genera3 Genera3 Genera3 Genera3 Genera3 Genera3
Riga Tutte le proprietà4 Tutte le proprietà4 Tutte le proprietà4 Genera3 Genera3 Tutte le proprietà4 Genera3
Tipo primitivo Specifico del provider Specifico del provider Specifico del provider Specifico del provider Specifico del provider Specifico del provider Specifico del provider
Multiset Genera3 Genera3 Genera3 Genera3 Genera3 Genera3 Genera3
Rif 5 5 5 5 Throw Throw 5
Associazione

type
Genera3 Throw Throw Throw Genera3 Genera3 Genera3

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

Vedi anche