TREAT (Entity SQL)

Обрабатывает объект некоторого базового типа, как объект указанного производного типа.

Синтаксис

TREAT ( expression as type)

Аргументы

expression Любое допустимое выражение запроса, возвращающее сущность.

Примечание.

Тип указанного выражения должен быть подтипом указанного типа данных, либо тип данных должен быть подтипом типа выражения.

type Тип сущности. Для типа должно быть указано пространство имен.

Примечание.

Указанное выражение должно быть подтипом указанного типа данных, либо тип данных должен быть подтипом данного выражения.

Возвращаемое значение

Значение указанного типа данных.

Замечания

Оператор TREAT предназначен для приведения связанных классов к базовому типу. Например, если тип Employee является производным от типа Person , а «p» относится к типу Person, то выражение TREAT(p AS NamespaceName.Employee) приводит общий экземпляр типа Person к типу Employee. Иными словами, он позволяет обрабатывать «p» как тип Employee.

Оператор TREAT используется в сценариях наследования, в которых можно выполнить запрос наподобие следующего.

SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)

Этот запрос приводит сущности Person к типу Employee . Если значение «p» фактически не относится к типу Employee, то выражение имеет значение null.

Примечание.

Указанное выражение Employee должно быть подтипом указанного типа Personданных, или тип данных должен быть подтипом выражения. В противном случае это выражение вызовет ошибку во время компиляции.

Следующая таблица показывает, каким образом оператор TREAT работает с некоторыми стандартными и не очень часто используемыми конструкциями. Все исключения формируются на стороне клиента перед вызовом поставщика.

Расписание Поведение
TREAT (null AS EntityType) Возвращает DbNull.
TREAT (null AS ComplexType) Создает исключение.
TREAT (null AS RowType) Создает исключение/
TREAT (EntityType AS EntityType) Возвращает значение EntityType или null.
TREAT (ComplexType AS ComplexType) Создает исключение.
TREAT (RowType AS RowType) Создает исключение.

Пример

Следующий запрос Entity SQL использует оператор TREAT для преобразования объекта type Course в коллекцию объектов типа OnsiteCourse. Запрос основан на модели School.

SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse) 
   FROM SchoolEntities.Courses AS course
   WHERE course IS OF( SchoolModel.OnsiteCourse)

См. также