Partager via


TREAT (Entity SQL)

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)

Voir aussi