TRATAR (Entity SQL)

Trata um objeto de um tipo base específico como um objeto do tipo derivado especificado.

Sintaxe

TREAT ( expression as type)

Argumentos

expression Qualquer expressão de consulta válida que retorna uma entidade.

Observação

O tipo da expressão especificada deve ser um subtipo do tipo de dados especificado, ou o tipo de dados deve ser um subtipo do tipo da expressão.

type Um tipo de objeto. O tipo deve ser qualificado por um namespace.

Observação

A expressão especificada deve ser um subtipo do tipo de dados especificado, ou o tipo de dados deve ser um subtipo da expressão.

Valor Retornado

Um valor de tipo de dados especificado.

Comentários

O DELEITE é usado para executar upcasting entre classes relacionadas. Por exemplo, se Employee deriva de Person e p é do tipo Person, upcasts de TREAT(p AS NamespaceName.Employee) uma instância genérica de Person a Employee; isto é, permite que você trate p como Employee.

O DELEITE é usado em cenários de herança onde você pode fazer uma consulta como o seguinte:

SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)

As entidades de Person de upcasts desta consulta a Employee tipo. Se o valor de p verdade não é do tipo Employee, a expressão produz o valor null.

Observação

A expressão especificada Employee precisa ser um subtipo do tipo de dados Person especificado, ou o tipo de dados precisa ser um subtipo da expressão. Caso contrário, a expressão resultará em um erro em tempo de compilação.

A tabela a seguir mostra o comportamento de tratam sobre alguns padrões típicos e alguns padrões menos comuns. Todas as exceções são geradas do lado do cliente antes que o provedor obtenha chamado:

Padrão Comportamento
TREAT (null AS EntityType) Retorna DbNull.
TREAT (null AS ComplexType) Gerencie uma exceção.
TREAT (null AS RowType) Gerencie uma exceção
TREAT (EntityType AS EntityType) Retorna EntityType ou null.
TREAT (ComplexType AS ComplexType) Gerencie uma exceção.
TREAT (RowType AS RowType) Gerencie uma exceção.

Exemplo

A consulta do Entity SQL a seguir usa o operador TREAT para converter um objeto do traço de tipo a uma coleção de objetos do tipo OnsiteCourse. A consulta é baseada no Modelo de Escola.

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

Confira também