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.
![]() |
---|
Указанное выражение |
Следующая таблица показывает, каким образом оператор TREAT работает с некоторыми стандартными и не очень часто используемыми конструкциями. Все исключения формируются на стороне клиента перед вызовом поставщика.
Конструкция | Поведение |
---|---|
|
Возвращает DbNull. |
|
Формирует исключение. |
|
Формирует исключение. |
|
Возвращает EntityType или null. |
|
Формирует исключение. |
|
Формирует исключение. |
Примеры
В следующем запросе Entity SQL оператор TREAT используется для преобразования объекта типа People в коллекцию объектов типа Student. Запрос основан на модели EDM «School». Дополнительные сведения о создании этой модели см. в разделе Создание модели EDM School (краткое руководство по платформе Entity Framework).
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
Этот пример выводит следующие данные.
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
См. также
Основные понятия
Операторы работы с типами (язык Entity SQL)
Справочник по Entity SQL
Структурированные типы, допускающие значение NULL (язык Entity SQL)