将特定基类型的对象视为指定派生类型的对象。
TREAT ( expression as type)
参数
expression
任何返回实体的有效查询表达式。注意
指定表达式的类型必须为指定数据类型的子类型,或者该数据类型必须为表达式的类型的子类型。
type
一个实体类型。该类型必须由命名空间进行限定。注意
指定表达式必须为指定数据类型的子类型,或者该数据类型必须为该表达式的子类型。
返回值
一个具有指定数据类型的值。
备注
TREAT 用于在相关类之间执行向上转换。例如,如果 Employee 派生自 Person 且 p 的类型为 Person,则 TREAT(p AS NamespaceName.Employee)
会将泛型 Person 实例向上转换为 Employee;即,使您可以将 p 视为 Employee。
TREAT 用于可以执行类似于以下查询的继承方案:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
此查询将 Person 实体向上转换为 Employee 类型。如果 p 的值的实际类型不是 Employee,则表达式会生成值 null。
![]() |
---|
指定表达式 |
下表显示了 TREAT 在某些典型模式和非常见模式下的行为。所有异常都在调用提供程序之前从客户端引发:
模式 | 行为 |
---|---|
|
返回 DbNull。 |
|
引发异常。 |
|
引发异常。 |
|
返回 EntityType 或 null。 |
|
引发异常。 |
|
引发异常。 |
示例
下面的 Entity SQL 查询使用 TREAT 运算符将类型为 People 的对象转换为类型为 Student 的对象的集合。该查询基于 School Entity Data Model。有关如何生成此模型的信息,请参见生成 School 实体数据模型(实体框架快速入门)。
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
此示例产生以下输出:
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
另请参见
概念
类型运算符 (Entity SQL)
Entity SQL 参考
可以为 Null 的结构化类型 (Entity SQL)