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