IS [NOT] OF (язык Entity SQL)
Определяет, относится ли тип выражения к указанному типу или одному из его подтипов.
expression IS [ NOT ] OF ( [ ONLY ] type )
Аргументы
- expression
Любое допустимое выражение запроса для определения типа.
- NOT
Выполняет отрицание результата EDM.Boolean для IS OF.
- ONLY
Указывает, что оператор IS OF возвращает значение true только в том случае, если выражение expression относится к типу type, а не одному из его подтипов.
- type
Тип, по которому проверяется выражение expression. Для типа должно быть указано пространство имен.
Возвращаемое значение
Значение true, если выражение expression относится к типу T, который является либо базовым типом, либо производным типом от типа type. Значение null, если выражение expression во время выполнения имеет значение null. В противном случае — значение false.
Замечания
Выражения expression IS NOT OF (type)
и expression IS NOT OF (ONLY type)
являются синтаксическими эквивалентами выражений NOT (expression IS OF (type))
и NOT (expression IS OF (ONLY type))
соответственно.
В следующей таблице показано, каким образом оператор IS OF работает с некоторыми стандартными и нестандартными конструкциями. Все исключения формируются на стороне клиента перед вызовом поставщика.
Шаблон | Поведение |
---|---|
null IS OF (EntityType) |
Формирует исключение |
null IS OF (ComplexType) |
Формирует исключение |
null IS OF (RowType) |
Формирует исключение |
TREAT (null AS EntityType) IS OF (EntityType) |
Возвращает DBNull |
TREAT (null AS ComplexType) IS OF (ComplexType) |
Формирует исключение |
TREAT (null AS RowType) IS OF (RowType) |
Формирует исключение |
EntityType IS OF (EntityType) |
Возвращает значение true или false |
ComplexType IS OF (ComplexType) |
Формирует исключение |
RowType IS OF (RowType) |
Формирует исключение |
Пример
В следующем запросе Entity SQL оператор IS OF используется для определения типа выражения запроса, а затем оператор TREAT преобразует объект типа Course в коллекцию объектов типа OnsiteCourse. Запрос основан на примере School, модель.
SELECT VALUE TREAT (course as SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses as course
WHERE course IS OF( SchoolModel.OnsiteCourse)