Freigeben über


TREAT (Entity SQL)

Behandelt ein Objekt eines bestimmten Basistyps als Objekt des angegebenen abgeleiteten Typs.

Syntax

TREAT ( expression as type)

Argumente

expression Ein beliebiger gültiger Abfrageausdruck, der eine Entität zurückgibt.

Hinweis

Der Typ des angegebenen Ausdrucks muss ein Untertyp des angegebenen Datentyps sein, oder der Datentyp muss ein Untertyp des Ausdruckstyps sein.

type Ein Entitätstyp. Der Typ muss durch einen Namespace qualifiziert werden.

Hinweis

Der angegebene Ausdruck muss ein Untertyp des angegebenen Datentyps sein, oder der Datentyp muss ein Untertyp des Ausdrucks sein.

Rückgabewert

Ein Wert des angegebenen Datentyps.

Bemerkungen

TREAT wird verwendet, um eine Upcasting zwischen verwandten Klassen durchzuführen. Wenn z. BEmployee. eine Ableitung von Person und p vom Typ Personist, TREAT(p AS NamespaceName.Employee) wird eine generische Instanz von Employeeeiner generischen Person Instanz erstellt, d. h. es ermöglicht Ihnen, p als Employeezu behandeln.

TREAT wird in Vererbungsszenarien verwendet, in denen Sie eine Abfrage wie die folgenden ausführen können:

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

Mit dieser Abfrage werden Entitäten auf den Employee Typ umgestaltetPerson. Wenn der Wert von p nicht tatsächlich vom Typ Employeeist, gibt der Ausdruck den Wert zurück null.

Hinweis

Der angegebene Ausdruck Employee muss ein Untertyp des angegebenen Datentyps Personsein, oder der Datentyp muss ein Untertyp des Ausdrucks sein. Andernfalls führt der Ausdruck zu einem Kompilierungszeitfehler.

Die folgende Tabelle zeigt das Verhalten der Behandlung einiger typischer Muster und weniger gängiger Muster. Alle Ausnahmen werden von der Clientseite ausgelöst, bevor der Anbieter aufgerufen wird:

Muster Verhalten
TREAT (null AS EntityType) Gibt DbNull zurück.
TREAT (null AS ComplexType) Löst eine Ausnahme aus.
TREAT (null AS RowType) Löst eine Ausnahme aus/
TREAT (EntityType AS EntityType) Gibt einen EntityType oder null zurück.
TREAT (ComplexType AS ComplexType) Löst eine Ausnahme aus.
TREAT (RowType AS RowType) Löst eine Ausnahme aus.

Beispiel

Die folgende Entity SQL-Abfrage verwendet den TREAT-Operator, um ein Objekt vom Typ "Course" in eine Auflistung von Objekten des Typs "OnsiteCourse" zu konvertieren. Die Abfrage basiert auf dem Schulmodell.

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

Siehe auch