IS [NOT] OF (Entity SQL)
Détermine si le type d'une expression appartient au type spécifié ou à l'un de ses sous-types.
expression IS [ NOT ] OF ( [ ONLY ] type )
Arguments
- expression
Toute expression de requête valide pour en déterminer le type.
- NOT
Inverse le résultat EDM.Boolean de l'opérateur IS OF.
- ONLY
Indique que l'opérateur IS OF ne retourne true que si expression appartient au type type et non à l'un de ses sous-types.
- type
Type sur lequel tester expression. Le type doit être qualifié par un espace de noms.
Valeur de retour
true si expression est de type T, qui est soit un type de base, soit un type dérivé de type ; null si expression a la valeur null au moment de l'exécution ; sinon, false.
Notes
Les expressionsexpression IS NOT OF (type)
etexpression IS NOT OF (ONLY type)
sont du point de vue syntaxique équivalentes àNOT (expression IS OF (type))
et NOT (expression IS OF (ONLY type))
, respectivement.
Le tableau suivant indique le comportement de l'opérateur IS OF sur certains modèles courants et d'autres plus singuliers. Toutes les exceptions sont levées côté client avant que le fournisseur soit appelé :
Modèle | Comportement |
---|---|
null IS OF (EntityType) |
Exception |
null IS OF (ComplexType) |
Exception |
null IS OF (RowType) |
Exception |
TREAT (null AS EntityType) IS OF (EntityType) |
Retourne DBNull |
TREAT (null AS ComplexType) IS OF (ComplexType) |
Exception |
TREAT (null AS RowType) IS OF (RowType) |
Exception |
EntityType IS OF (EntityType) |
Retourne true/false |
ComplexType IS OF (ComplexType) |
Exception |
RowType IS OF (RowType) |
Exception |
Exemple
La requête Entity SQL ci-dessous utilise l'opérateur IS OF pour déterminer le type d'une expression de requête, puis utilise l'opérateur TREAT pour convertir un objet du type Course en collection d'objets du type OnsiteCourse. La requête est basée sur le Modèle School.
SELECT VALUE TREAT (course as SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses as course
WHERE course IS OF( SchoolModel.OnsiteCourse)