TREAT (Entity SQL)
Behandelt ein Objekt eines bestimmten Basistyps als Objekt des angegebenen abgeleiteten Typs.
TREAT ( expression as type)
Argumente
expression
Jeder gültige Abfrageausdruck, der eine Entität zurückgibt.Hinweis Beim Typ des angegebenen Ausdrucks muss es sich um einen Untertyp des angegebenen Datentyps oder umgekehrt handeln.
type
Ein Entitätstyp. Der Typ muss mit einem Namespace qualifiziert werden.Hinweis Beim Typ des angegebenen Ausdrucks muss es sich um einen Untertyp des angegebenen Datentyps oder umgekehrt handeln.
Rückgabewert
Ein Wert des angegebenen Datentyps.
Hinweise
TREAT wird zum Umwandeln zwischen verknüpften Klassen verwendet. Wenn z. B. Employee von Person abgeleitet ist und "p" vom Typ Person ist, wandelt TREAT(p AS NamespaceName.Employee)
eine generische Person-Instanz in Employee um. Das bedeutet, dass "p" als Employee behandelt werden kann.
TREAT wird in Vererbungsszenarios verwendet, in denen eine Abfrage wie die folgende möglich ist:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
In dieser Abfrage werden Person-Entitäten in den Employee-Typ umgewandelt. Wenn der Wert von "p" nicht tatsächlich vom Typ Employee ist, gibt der Ausdruck den Wert null zurück.
Hinweis |
---|
Beim Typ des angegebenen Ausdrucks |
In der folgenden Tabelle wird das Verhalten von TREAT für einige typische und weniger typische Muster dargestellt. Alle Ausnahmen werden von der Clientseite ausgelöst, bevor der Anbieter aufgerufen wird:
Muster | Verhaltensweise |
---|---|
|
Gibt DbNull zurück. |
|
Löst eine Ausnahme aus. |
|
Löst eine Ausnahme aus. |
|
Gibt einen EntityType oder null zurück. |
|
Löst eine Ausnahme aus. |
|
Löst eine Ausnahme aus. |
Beispiel
In der folgenden Entity SQL-Abfrage wird der TREAT-Operator verwendet, um ein Objekt des Typs People in eine Auflistung von Objekten des Typs Student umzuwandeln. Die Abfrage basiert auf dem Entity Data Model "School". Weitere Informationen zum Erstellen dieses Modells finden Sie unter Erstellen des Entity Data Models 'School' (Entity Framework-Schnellstart).
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
Dieses Beispiel führt zur folgenden Ausgabe:
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
Siehe auch
Konzepte
Typoperatoren (Entity SQL)
Entity SQL-Referenz
Strukturierte Typen, die NULL-Werte zulassen (Entity SQL)