Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Traite un objet d’un type de base particulier comme un objet du type dérivé spécifié.
Syntaxe
TREAT ( expression as type)
Les arguments
expression Toute expression de requête valide qui retourne une entité.
Remarque
Le type de l’expression spécifiée doit être un sous-type du type de données spécifié, ou le type de données doit être un sous-type du type d’expression.
type Type d’entité. Le type doit être qualifié par un espace de noms.
Remarque
L’expression spécifiée doit être un sous-type du type de données spécifié, ou le type de données doit être un sous-type de l’expression.
Valeur de retour
Valeur du type de données spécifié.
Remarques
TREAT est utilisé pour effectuer la mise en cache entre les classes associées. Par exemple, si dérive Employee et Person p est de type Person, TREAT(p AS NamespaceName.Employee) upcasts une instance générique Person à Employee; autrement dit, il vous permet de traiter p comme Employee.
TREAT est utilisé dans les scénarios d’héritage où vous pouvez effectuer une requête comme suit :
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Cette requête upcasts Person entités sur le Employee type. Si la valeur de p n’est pas réellement de type Employee, l’expression génère la valeur null.
Remarque
L’expression Employee spécifiée doit être un sous-type du type Personde données spécifié, ou le type de données doit être un sous-type de l’expression. Sinon, l’expression entraîne une erreur au moment de la compilation.
Le tableau suivant montre le comportement de traitement sur certains modèles classiques et certains modèles moins courants. Toutes les exceptions sont levées du côté client avant que le fournisseur soit appelé :
| Modèle | Comportement |
|---|---|
TREAT (null AS EntityType) |
Retourne DbNull. |
TREAT (null AS ComplexType) |
Lève une exception. |
TREAT (null AS RowType) |
Lève une exception/ |
TREAT (EntityType AS EntityType) |
Retourne EntityType ou la valeur null. |
TREAT (ComplexType AS ComplexType) |
Lève une exception. |
TREAT (RowType AS RowType) |
Lève une exception. |
Exemple :
La requête Entity SQL suivante 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 scolaire.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)