Поделиться через


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

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

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

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

  • =

  • !=

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

  • <

  • <=

  • >

  • >=

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

  • IS NULL

  • IS NOT NULL

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

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

  • DISTINCT

  • GROUP BY

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

  • ORDER BY

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

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

  • UNION

  • INTERSECT

  • EXCEPT

  • SET

  • OVERLAPS

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

  • IN

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

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

Тип

=

!=

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

См. также

Основные понятия

Общие сведения о языке Entity SQL