比較セマンティクス (Entity SQL)
次のいずれかの Entity SQL 演算子を実行すると、型インスタンスの比較が行われます。
明示的な比較
等価演算
=
!=
順序付け操作
<
<=
>
>=
NULL 値が許容される操作
IS NULL
IS NOT NULL
明示的な区別
等価区別
DISTINCT
GROUP BY
順序付け区別
- ORDER BY
暗黙的な区別
設定操作および述語 (等価)
UNION
INTERSECT
EXCEPT
SET
OVERLAPS
項目述語 (等価)
- IN
サポートされている組み合わせ
次の表は、各種類の型の比較演算子のサポートされているすべての組み合わせを示します。
Type |
= != |
GROUP BY DISTINCT |
UNION INTERSECT EXCEPT SET OVERLAPS |
IN |
< <= > >= |
ORDER BY |
IS NULL IS NOT NULL |
エンティティ型 |
参照1 |
すべてのプロパティ2 |
すべてのプロパティ2 |
すべてのプロパティ2 |
スロー3 |
スロー3 |
参照1 |
複合型 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
行 |
すべてのプロパティ4 |
すべてのプロパティ4 |
すべてのプロパティ4 |
スロー3 |
スロー3 |
すべてのプロパティ4 |
スロー3 |
プリミティブ型 |
プロバイダー固有 |
プロバイダー固有 |
プロバイダー固有 |
プロバイダー固有 |
プロバイダー固有 |
プロバイダー固有 |
プロバイダー固有 |
マルチセット |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
スロー3 |
参照 |
○5 |
○5 |
○5 |
○5 |
スロー |
スロー |
○5 |
関連付け 型 |
スロー3 |
スロー |
スロー |
スロー |
スロー3 |
スロー3 |
スロー3 |
1次の例に示すように、エンティティ型インスタンスの参照は暗黙的に比較されます。
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != p2 OR p1 IS NULL
エンティティ インスタンスは、明示的な参照に対して比較できません。 明示的な参照に対する比較を行った場合は、例外がスローされます。 たとえば、次のクエリを実行すると、例外がスローされます。
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != REF(p2)
2複合型のプロパティは、ストアに送信される前にフラット化されるので、比較が可能になります (すべてのプロパティが比較可能である場合)。 4 も参照してください。
3Entity Framework ランタイムでは、サポートされていないケースが検出され、プロバイダー/ストアは呼び出されずに、意味のある例外がスローされます。
4すべてのプロパティの比較が試行されます。 比較不能な型のプロパティ (text、ntext、image など) がある場合、サーバー例外がスローされることがあります。
5参照のすべての個々の要素 (エンティティ セット名およびエンティティ型のすべてのキー プロパティを含む) が比較されます。