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)