ISOF (Entity SQL)
Détermine si le type d'une expression appartient au type spécifié ou à l'un de ses sous-types.
Syntaxe
expression IS [ NOT ] OF ( [ ONLY ] type )
Arguments
expression
Toute expression de requête valide pour en déterminer le type.
NOT Met le résultat EDM.Boolean de l’opérateur IS OF à la forme négative.
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 renvoyée
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 expressions expression IS NOT OF (type)
et expression IS NOT OF (ONLY type)
sont syntaxiquement é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. Cette requête est basée sur le modèle School.
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]