TREAT (язык Entity SQL)

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

TREAT ( expression as type)

Аргументы

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

    Bb387106.note(ru-ru,VS.100).gifПримечание
    Тип указанного выражения должен быть подтипом указанного типа данных, либо тип данных должен быть подтипом типа выражения.

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

    Bb387106.note(ru-ru,VS.100).gifПримечание
    Указанное выражение должно быть подтипом указанного типа данных, либо тип данных должен быть подтипом данного выражения.

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

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

Замечания

Оператор 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.

Bb387106.note(ru-ru,VS.100).gifПримечание
Указанное выражение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 используется для преобразования объекта типа Course в коллекцию объектов типа OnsiteCourse. Запрос основан на примере School, модель.

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

См. также

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

Справочник по Entity SQL
Структурированные типы, допускающие значение NULL (язык Entity SQL)