ISOF (Entity SQL)
Определяет, относится ли тип выражения к указанному типу или одному из его подтипов.
Синтаксис
expression IS [ NOT ] OF ( [ ONLY ] type )
Аргументы
expression
Любое допустимое выражение запроса для определения типа.
НЕ отрицает EDM. Логический результат IS OF.
ТОЛЬКО указывает, что IS OF возвращается true
только в том случае, если expression
тип type
и не один из его подтипов.
type
Тип для проверки expression
. Для типа должно быть указано пространство имен.
Возвращаемое значение
true
Значение , если expression
имеет тип T и 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 для преобразования объекта type Course в коллекцию объектов типа OnsiteCourse. Запрос основан на модели School.
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]