OFTYPE (Entity SQL)
Gibt eine Auflistung der Objekte von einem Abfrageausdruck eines bestimmten Typs zurück.
OFTYPE ( expression, [ONLY] test_type )
Argumente
- expression
Jeder gültige Abfrageausdruck, der eine Auflistung von Objekten zurückgibt.
- test_type
Der Typ, dessen Übereinstimmung mit jedem von expression zurückgegebenen Objekt getestet wird. Der Typ muss mit einem Namespace qualifiziert werden.
Rückgabewert
Eine Auflistung von Objekten vom Typ test_type, von einem Basistyp oder von einem von test_type abgeleiteten Typ. Wenn ONLY angegeben wird, werden nur Instanzen des test_type oder eine leere Auflistung zurückgegeben.
Hinweise
Ein OFTYPE-Ausdruck stellt einen Typausdruck dar, der angegeben wird, um einen Typtest für jedes Element einer Auflistung durchzuführen. Der OFTYPE-Ausdruck liefert eine neue Auflistung des angegebenen Typs, die nur die zu diesem Typ oder einem seiner Untertypen äquivalenten Elemente enthält.
Ein OFTYPE-Ausdruck ist eine Abkürzung des folgenden Abfrageausdrucks:
select value treat(t as T) from ts as t where t is of (T)
Wenn beispielsweise "Manager" ein Untertyp von "Employee" (Mitarbeiter) ist, liefert der folgende Ausdruck nur die Manager aus einer Auflistung der Mitarbeiter:
OfType(employees, NamespaceName.Manager)
Mithilfe des Typfilters kann eine Auflistung auch umgewandelt werden:
OfType(executives, NamespaceName.Manager)
Da alle Direktoren Manager sind, enthält die resultierende Auflistung alle Direktoren, auch wenn die Auflistung nun als eine Auflistung von Managern typisiert ist.
In der folgenden Tabelle wird das Verhalten des OFTYPE-Operators für verschiedene Muster dargestellt. Alle Ausnahmen werden von der Clientseite ausgelöst, bevor der Anbieter aufgerufen wird:
Muster | Verhaltensweise |
---|---|
OFTYPE (Collection(EntityType), (EntityType) |
Collection(EntityType) |
OFTYPE(Collection(ComplexType), ComplexType) |
Löst aus |
OFTYPE(Collection(RowType), RowType) |
Löst aus |
Beispiel
Die folgende Entity SQL -Abfrage verwendet den OFTYPE-Operator, um eine Auflistung der OnsiteCourse-Objekte von einer Auflistung von Kursobjekten zurückzugeben. Die Abfrage basiert auf dem Modell "School".
SELECT onsiteCourse.Location FROM
OFTYPE(SchoolEntities.Courses, SchoolModel.OnsiteCourse)
AS onsiteCourse