Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Trata un objeto de un tipo base determinado como un objeto del tipo derivado especificado.
Sintaxis
TREAT ( expression as type)
Argumentos
expression Cualquier expresión de consulta válida que devuelva una entidad.
Nota:
El tipo de la expresión especificada debe ser un subtipo del tipo de datos especificado o el tipo de datos debe ser un subtipo del tipo de expresión.
type Tipo de entidad. El tipo debe estar calificado por un espacio de nombres.
Nota:
La expresión especificada debe ser un subtipo del tipo de datos especificado o el tipo de datos debe ser un subtipo de la expresión.
Valor devuelto
Valor del tipo de datos especificado.
Observaciones
TREAT se usa para realizar la difusión entre clases relacionadas. Por ejemplo, si Employee deriva de Person y p es de tipo Person, TREAT(p AS NamespaceName.Employee) redifusión de una instancia genérica Person a Employee; es decir, permite tratar p como Employee.
TREAT se usa en escenarios de herencia en los que puede realizar una consulta como la siguiente:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Esta consulta convierte Person las entidades en el Employee tipo . Si el valor de p no es realmente de tipo Employee, la expresión produce el valor null.
Nota:
La expresión Employee especificada debe ser un subtipo del tipo Personde datos especificado o el tipo de datos debe ser un subtipo de la expresión. De lo contrario, la expresión producirá un error en tiempo de compilación.
En la tabla siguiente se muestra el comportamiento de tratar sobre algunos patrones típicos y algunos patrones menos comunes. Todas las excepciones se inician desde el lado cliente antes de que se invoque al proveedor:
| Modelo | Comportamiento |
|---|---|
TREAT (null AS EntityType) |
Devuelve DbNull. |
TREAT (null AS ComplexType) |
Produce una excepción. |
TREAT (null AS RowType) |
Produce una excepción/ |
TREAT (EntityType AS EntityType) |
Devuelve EntityType o null. |
TREAT (ComplexType AS ComplexType) |
Produce una excepción. |
TREAT (RowType AS RowType) |
Produce una excepción. |
Ejemplo
La siguiente consulta entity SQL usa el operador TREAT para convertir un objeto del tipo Course en una colección de objetos del tipo OnsiteCourse. La consulta se basa en el modelo escolar.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)