比較セマンティクス (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 | Throw | Throw | ○5 |
関連付け 型 |
スロー3 | Throw | Throw | Throw | スロー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 も参照してください。
3 Entity Framework ランタイムでは、サポートされていないケースが検出され、プロバイダー/ストアは呼び出されずに、意味のある例外がスローされます。
4 すべてのプロパティの比較が試行されます。 比較不能な型のプロパティ (text、ntext、image など) がある場合、サーバー例外がスローされることがあります。
5 参照のすべての個々の要素 (エンティティ セット名およびエンティティ型のすべてのキー プロパティを含む) が比較されます。