Partager via


Sémantique de comparaison (Entity SQL)

L'exécution des opérateurs Entité SQL suivants implique une comparaison d'instances de type :

Comparaison explicite

Opérations d'égalité :

  • =

  • !=

Opérations de classement :

  • <

  • <=

  • >

  • >=

Opérations relatives à la possibilité de valeurs NULL :

  • IS NULL

  • IS NOT NULL

Distinction explicite

Distinction d'égalité :

  • DISTINCT

  • GROUP BY

Distinction de classement :

  • ORDER BY

Distinction implicite

Opérations et prédicats de définition (égalité) :

  • UNION

  • INTERSECT

  • EXCEPT

  • SET

  • OVERLAPS

Prédicats d'élément (égalité) :

  • IN

Combinaisons prises en charge

Le tableau suivant répertorie toutes les combinaisons prises en charge des opérateurs de comparaison pour chaque type :

Type

=

!=

GROUP BY

DISTINCT

UNION

INTERSECT

EXCEPT

SET

OVERLAPS

IN

< <=

> >=

ORDER BY

IS NULL

IS NOT NULL

Type d'entité

Ref1

Toutes les propriétés2

Toutes les propriétés2

Toutes les propriétés2

Levée3

Levée3

Ref1

Type complexe

Levée3

Levée3

Levée3

Levée3

Levée3

Levée3

Levée3

Ligne

Toutes les propriétés4

Toutes les propriétés4

Toutes les propriétés4

Levée3

Levée3

Toutes les propriétés4

Levée3

Type primitif

Spécifique au fournisseur

Spécifique au fournisseur

Spécifique au fournisseur

Spécifique au fournisseur

Spécifique au fournisseur

Spécifique au fournisseur

Spécifique au fournisseur

Multiset

Levée3

Levée3

Levée3

Levée3

Levée3

Levée3

Levée3

Ref

Oui5

Oui5

Oui5

Oui5

Levée

Levée

Oui5

Type

d'association

Levée3

Levée

Levée

Levée

Levée3

Levée3

Levée3

1Les références des instances de type d'entité données sont comparées implicitement, comme l'illustre l'exemple suivant :

SELECT p1, p2 
FROM AdventureWorksEntities.Product AS p1 
     JOIN AdventureWorksEntities.Product AS p2 
WHERE p1 != p2 OR p1 IS NULL

Une instance d'entité ne peut pas être comparée à une référence explicite. Lors d'une telle tentative, une exception est levée. Par exemple, la requête suivante lève une exception :

SELECT p1, p2 
FROM AdventureWorksEntities.Product AS p1 
     JOIN AdventureWorksEntities.Product AS p2 
WHERE p1 != REF(p2)

2Les propriétés de types complexes sont aplaties avant d'être envoyées au magasin, afin de pouvoir être comparées (tant que toutes leurs propriétés peuvent être comparées). Voir aussi 4.

3L'exécution d'Entity Framework détecte le cas non pris en charge et lève une exception explicite sans engager le fournisseur/magasin.

4Une tentative est faite pour comparer toutes les propriétés. Si une propriété est d'un type non comparable, tel que text, ntext ou image, une exception de serveur peut être levée.

5Tous les éléments individuels des références sont comparés (cela inclut le nom du jeu d'entités et toutes les propriétés clés du type d'entité).

Voir aussi

Concepts

Vue d'ensemble d'Entity SQL