TREAT (Entity SQL)

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 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 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

Un valor del tipo de datos especificado.

Observaciones

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.

Nota:

La expresión especificada Employee debe ser un subtipo del tipo de datos especificado Person, 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 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
TREAT (null AS EntityType) Devuelve DbNull.
TREAT (null AS ComplexType) Inicia una excepción.
TREAT (null AS RowType) Produce una excepción.
TREAT (EntityType AS EntityType) Devuelve EntityType o null.
TREAT (ComplexType AS ComplexType) Inicia una excepción.
TREAT (RowType AS RowType) Inicia una excepción.

Ejemplo

La consulta de Entity SQL siguiente 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 School.

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

Vea también