Compartir a través de


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.

Nota

La expresiónEmployee especificada debe ser un subtipo del tipo de datos especificado, o el tipo de datos Person 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)

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