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

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

Vedere anche

Concetti

Panoramica su Entity SQL