Vergleichssemantik (Entity SQL)
Beim Ausführen jedes der folgenden Entity SQL-Operatoren werden Typinstanzen verglichen:
Expliziter Vergleich
Gleichheitsoperationen:
=
!=
Sortieroperationen:
<
<=
>
>=
NULL-Zulässigkeitsoperationen:
IS NULL
IS NOT NULL
Explizite Unterscheidung
Gleichheitsunterscheidung:
DISTINCT
GROUP BY
Sortierunterscheidung:
- ORDER BY
Implizite Unterscheidung
Mengenoperationen und Prädikate (Gleichheit):
UNION
INTERSECT
EXCEPT
SET
OVERLAPS
Elementprädikate (Gleichheit):
- IN
Unterstützte Kombinationen
In der folgenden Tabelle werden alle unterstützten Kombinationen von Vergleichsoperatoren für jede Art von Typ angezeigt:
Typ | = != |
GROUP BY DISTINCT |
UNION INTERSECT EXCEPT SET OVERLAPS |
IN | <<= >>= |
ORDER BY | IS NULL IS NOT NULL |
---|---|---|---|---|---|---|---|
Entitätstyp | Ref1 | Alle Eigenschaften2 | Alle Eigenschaften2 | Alle Eigenschaften2 | Auslösen3 | Auslösen3 | Ref1 |
Komplexer Typ | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 |
Zeile | Alle Eigenschaften4 | Alle Eigenschaften4 | Alle Eigenschaften4 | Auslösen3 | Auslösen3 | Alle Eigenschaften4 | Auslösen3 |
Primitiver Typ | Anbieterspezifisch | Anbieterspezifisch | Anbieterspezifisch | Anbieterspezifisch | Anbieterspezifisch | Anbieterspezifisch | Anbieterspezifisch |
Multiset | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 | Auslösen3 |
Ref | Ja5 | Ja5 | Ja5 | Ja5 | Throw | Throw | Ja5 |
Zuordnung Typ |
Auslösen3 | Throw | Throw | Throw | Auslösen3 | Auslösen3 | Auslösen3 |
1Die Verweise der angegebenen Entitätstypinstanzen werden implizit verglichen, wie im folgenden Beispiel gezeigt:
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != p2 OR p1 IS NULL
Eine Entitätsinstanz kann nicht mit einem expliziten Verweis verglichen werden. Eine Ausnahme wird ausgelöst, wenn dies versucht wird. Folgende Abfrage löst beispielsweise eine Ausnahme aus:
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != REF(p2)
2Eigenschaften komplexer Typen werden vor dem Speichern vereinfacht, sodass sie vergleichbar werden (sofern alle ihre Eigenschaften vergleichbar sind). Siehe auch 4.
3Die Entity Framework-Laufzeit erkennt den nicht unterstützten Fall und löst eine angemessene Ausnahme aus, ohne den Anbieter/Speicher in Anspruch zu nehmen.
4Es wird versucht, alle Eigenschaften zu vergleichen. Wenn eine Eigenschaft einen nicht vergleichbaren Typ hat, wie beispielsweise text, ntext oder image, kann eine Serverausnahme ausgelöst werden.
5Alle Einzelelemente der Verweise werden verglichen (einschließlich des Namens der Entitätenmenge und aller Schlüsseleigenschaften des Entitätstyps).