Семантика сравнения (Entity SQL)

Выполнение любого из следующих операторов Entity SQL включает сравнение экземпляров типов:

Явное сравнение

Операции сравнения:

  • =

  • !=

Операции упорядочивания:

  • <

  • <=

  • >

  • >=

Операции допустимости значений NULL:

  • IS NULL

  • IS NOT NULL

Явное отличие

Отличие равенства:

  • DISTINCT

  • GROUP BY

Отличие упорядочивания:

  • ORDER BY

Неявное отличие

Операция и предикаты для работы с наборами (равенство):

  • UNION

  • INTERSECT

  • ИСКЛЮЧЕНИЯ

  • SET

  • OVERLAPS

Предикаты элементов (равенство):

  • В

Поддерживаемые сочетания

В следующей таблице приводятся все поддерживаемые сочетания операторов сравнения для каждого типа.

Тип =

!=
GROUP BY

DISTINCT
UNION

INTERSECT

EXCEPT

SET

OVERLAPS
IN <<=

>>=
ORDER BY IS NULL

НЕ ИМЕЕТ ЗНАЧЕНИЯ 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
Ref Да5 Да5 Да5 Да5 Throw Throw Да5
Связь

type
Бросок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Все отдельные элементы ссылок сравниваются (это включает имя набора сущностей и все ключевые свойства типа сущности).

См. также