比較セマンティクス (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 参照のすべての個々の要素 (エンティティ セット名およびエンティティ型のすべてのキー プロパティを含む) が比較されます。

関連項目