TREAT (Entity SQL)
Trata un objeto de un tipo base determinado como un objeto del tipo derivado especificado.
TREAT ( expression as type)
Argumentos
expression
Cualquier expresión de consulta válida que devuelve 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 certificado 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
Un valor del tipo de datos especificado.
Comentarios
TREAT se utiliza para realizar una conversión entre clases relacionadas. Por ejemplo, si Employee deriva de Person y p es de tipo Person, TREAT(p AS NamespaceName.Employee)
convierte una instancia de Person genérica a Employee; es decir, permite tratar p como Employee.
TREAT se utiliza en situaciones de herencia donde se puede realizar una consulta como la siguiente:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Este consulta convierte entidades Person al tipo Employee. Si el valor de p no es realmente de tipo Employee, la expresión obtiene el valor null.
![]() |
---|
La expresión |
En la tabla siguiente se muestra el comportamiento del tratamiento en algunos patrones típicos y algunos patrones menos comunes. Todas las excepciones se producen en el cliente antes de que se llame al proveedor:
Patrón | Comportamiento |
---|---|
|
Devuelve DbNull. |
|
Produce una excepción. |
|
Produce una excepción. |
|
Devuelve EntityType o null. |
|
Produce una excepción. |
|
Produce una excepción. |
Ejemplo
La consulta de Entity SQL siguiente utiliza el operador TREAT para convertir un objeto del tipo People en una colección de objetos del tipo Student. La consulta se basa en Entity Data Model School. Para obtener información sobre cómo generar este modelo, vea Generar el Entity Data Model School (Tutorial rápido de Entity Framework).
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
Este ejemplo genera el siguiente resultado:
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
Vea también
Conceptos
Operadores de tipo (Entity SQL)
Referencia de Entity SQL
Tipos estructurados que admiten valores NULL (Entity SQL)