TREAT (Entity SQL)
Traite un objet d'un type de base déterminé en tant qu'objet du type dérivé spécifié.
TREAT ( expression as type)
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 de l'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é.
Notes
TREAT est utilisé pour effectuer un upcast entre des classes connexes. Par exemple, si Employee est dérivé de Person et que p est de type Person, TREAT(p AS NamespaceName.Employee)
effectue un upcast d'une instance générique de Person vers Employee ; autrement dit, cela vous permet de traiter p en tant que Employee.
TREAT est utilisé dans des scénarios d'héritage dans lesquels vous pouvez exécuter une requête de ce type :
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Cette requête effectue un upcast d'entités Person vers le type Employee. S'il s'avère que la valeur de p n'est pas de type Employee, l'expression génère la valeur null.
Remarque |
---|
L'expression |
Le tableau suivant indique le comportement de TREAT sur certains modèles communs et d'autres moins courants. Toutes les exceptions sont levées du côté client avant que le fournisseur ne soit appelé :
Modèle | Comportement |
---|---|
|
Retourne DbNull. |
|
Lève une exception. |
|
Lève une exception/ |
|
Retourne EntityType ou null. |
|
Lève une exception. |
|
Lève une exception. |
Exemple
La requête Entité SQL ci-dessous utilise l'opérateur TREAT pour convertir un objet de type People en collection d'objets de type Student. Cette requête est basée sur le modèle School Entity Data Model. Pour obtenir des informations sur la façon de générer ce modèle, voir Génération du modèle Entity Data Model School (Démarrage rapide d'Entity Framework).
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
Cet exemple génère la sortie suivante :
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
Voir aussi
Concepts
Opérateurs de type [Entity SQL]
Référence Entity SQL
Types structurés nullables (Entity SQL)