Comparison Semantics (Entity SQL)

Performing any of the following Entity SQL operators involves comparison of type instances:

Explicit comparison

Equality operations:

  • =

  • !=

Ordering operations:

  • <

  • <=

  • >=

Nullability operations:

  • IS NULL

  • IS NOT NULL

Explicit distinction

Equality distinction:

  • DISTINCT

  • GROUP BY

Ordering distinction:

  • ORDER BY

Implicit distinction

Set operations and predicates (equality):

  • UNION

  • INTERSECT

  • EXCEPT

  • SET

  • OVERLAPS

Item predicates (equality):

  • IN

Supported Combinations

The following table shows all the supported combinations of comparison operators for each kind of type:

Type =

!=
GROUP BY

DISTINCT
UNION

INTERSECT

EXCEPT

SET

OVERLAPS
IN < <=

> >=
ORDER BY IS NULL

IS NOT NULL
Entity type Ref1 All properties2 All properties2 All properties2 Throw3 Throw3 Ref1
Complex type Throw3 Throw3 Throw3 Throw3 Throw3 Throw3 Throw3
Row All properties4 All properties4 All properties4 Throw3 Throw3 All properties4 Throw3
Primitive type Provider-specific Provider-specific Provider-specific Provider-specific Provider-specific Provider-specific Provider-specific
Multiset Throw3 Throw3 Throw3 Throw3 Throw3 Throw3 Throw3
Ref Yes5 Yes5 Yes5 Yes5 Throw Throw Yes5
Association

type
Throw3 Throw Throw Throw Throw3 Throw3 Throw3

1The references of the given entity type instances are implicitly compared, as shown in the following example:

SELECT p1, p2   
FROM AdventureWorksEntities.Product AS p1   
     JOIN AdventureWorksEntities.Product AS p2   
WHERE p1 != p2 OR p1 IS NULL  

An entity instance cannot be compared to an explicit reference. If this is attempted, an exception is thrown. For example, the following query will throw an exception:

SELECT p1, p2   
FROM AdventureWorksEntities.Product AS p1   
     JOIN AdventureWorksEntities.Product AS p2   
WHERE p1 != REF(p2)  

2Properties of complex types are flattened out before being sent to the store, so they become comparable (as long as all their properties are comparable). Also see 4.

3The Entity Framework runtime detects the unsupported case and throws a meaningful exception without engaging the provider/store.

4An attempt is made to compare all properties. If there is a property that is of a non-comparable type, such as text, ntext, or image, a server exception might be thrown.

5All individual elements of the references are compared (this includes the entity set name and all the key properties of the entity type).

See Also

Entity SQL Overview