TREAT (Entity SQL)
將特定基底類型的物件視為所指定衍生型別的物件。
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。 |
|
擲回例外狀況。 |
|
擲回例外狀況。 |
範例
以下 實體 SQL 查詢使用 TREAT 運算子將 People 型別的物件轉換成 Student 型別的物件集合。 此查詢是以 School Entity Data Model 為依據。 如需如何產生此模型的相關資訊,請參閱產生 School Entity Data Model (Entity Framework 快速入門)。
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)