ISOF (Entity SQL)
Ermittelt, ob der Typ eines Ausdrucks vom angegebenen Typ oder einem seiner Untertypen ist.
Syntax
expression IS [ NOT ] OF ( [ ONLY ] type )
Argumente
expression
ist ein gültiger Abfrageausdruck, dessen Typ bestimmt werden soll.
NOT negiert das EDM.Boolean-Ergebnis von IS OF.
ONLY legt fest, dass von IS OF nur dann true
zurückgegeben wird, wenn expression
vom Typ type
und nicht von einem seiner Untertypen ist.
type
ist der Typ, dessen Übereinstimmung mit dem Typ von expression
überprüft werden soll. Der Typ muss mit einem Namespace qualifiziert werden.
Rückgabewert
true
, wenn expression
vom Typ „T“ und „T“ entweder ein Basistyp oder ein von type
abgeleiteter Typ ist. NULL, wenn expression
zur Laufzeit den Wert NULL hat, andernfalls false
.
Bemerkungen
Die Ausdrücke expression IS NOT OF (type)
und expression IS NOT OF (ONLY type)
sind syntaktisch mit und NOT (expression IS OF (type))
bzw. NOT (expression IS OF (ONLY type))
identisch.
In der folgenden Tabelle wird das Verhalten des IS OF
-Operators für einige typische und weniger typische Muster dargestellt. Alle Ausnahmen werden von der Clientseite ausgelöst, bevor der Anbieter aufgerufen wird:
Muster | Verhalten |
---|---|
null IS OF (EntityType) | Löst aus |
null IS OF (ComplexType) | Löst aus |
null IS OF (RowType) | Löst aus |
TREAT (null AS EntityType) IS OF (EntityType) | Gibt DBNull zurück. |
TREAT (null AS ComplexType) IS OF (ComplexType) | Löst aus |
TREAT (null AS RowType) IS OF (RowType) | Löst aus |
EntityType IS OF (EntityType) | Gibt True/False zurück. |
ComplexType IS OF (ComplexType) | Löst aus |
RowType IS OF (RowType) | Löst aus |
Beispiel
In der folgenden Entity SQL-Abfrage wird der IS OF-Operator verwendet, um den Typ eines Abfrageausdrucks zu ermitteln. Danach wird mithilfe des TREAT-Operators ein Objekt des Typs „Course“ in eine Auflistung von Objekten des Typs „OnsiteCourse“ umgewandelt. Die Abfrage basiert auf dem Modell "School".
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]