Sémantique de comparaison (Entity SQL)

L'exécution des opérateurs Entity 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 Lever3 Lever3 Ref1
Type complexe Lever3 Lever3 Lever3 Lever3 Lever3 Lever3 Lever3
Ligne Toutes les propriétés4 Toutes les propriétés4 Toutes les propriétés4 Lever3 Lever3 Toutes les propriétés4 Lever3
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 Lever3 Lever3 Lever3 Lever3 Lever3 Lever3 Lever3
Ref Oui5 Oui5 Oui5 Oui5 Throw Throw Oui5
Association

type
Lever3 Throw Throw Throw Lever3 Lever3 Lever3

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 aplanies avant leur envoi au magasin, afin qu’elles deviennent comparables (pour autant que toutes leurs propriétés soient comparables). 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