Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обрабатывает объект определенного базового типа как объект указанного производного типа.
Синтаксис
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 (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. Запрос основан на модели школы.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)