Compartir a través de


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

Consulte también