Partager via


Procédure : assigner des procédures stockées pour effectuer des mises à jour, des insertions et des suppressions (Concepteur O/R)

Les procédures stockées peuvent être ajoutées au Concepteur O/R et être exécutées comme méthodes DataContext typiques. Elles peuvent également être utilisées pour substituer le comportement au moment de l'exécution par défaut de LINQ to SQL qui effectue des insertions, des mises à jour et des suppressions lorsque les modifications sont enregistrées à partir de classes d'entité dans une base de données (par exemple, lors de l'appel de la méthode SubmitChanges ).

Notes

Si votre procédure stockée retourne des valeurs qui doivent être renvoyées au client (par exemple, les valeurs sont calculées dans la procédure stockée), créez des paramètres de sortie dans vos procédures stockées. Si vous ne pouvez pas utiliser de paramètres de sortie, écrivez une implémentation de méthode partielle au lieu de vous fier aux substitutions générées par le Concepteur O/R. Les membres mappés aux valeurs générées par base de données doivent avoir les valeurs appropriées lorsque les opérations INSERT ou UPDATE se sont correctement achevées. Pour plus d'informations, consultez Responsabilités du développeur en matière de substitution du comportement par défaut (LINQ to SQL).

Notes

LINQ to SQL gère automatiquement les valeurs générées par une base de données pour les colonnes identity (incrémentation automatique), rowguidcol (GUID généré par la base de données) et timestamp. Les valeurs générées par une base de données dans les autres types de colonne entraînent une valeur null de manière inopinée. Pour retourner les valeurs générées par une base de données, vous devez affecter la valeur true à IsDbGenerated et l'une des valeurs suivantes à AutoSync : Always, OnInsert ou OnUpdate.

Configuration du comportement de mise à jour d'une classe d'entité

Par défaut, la logique de mise à jour d'une base de données (insertions, mises à jour et suppressions) avec les modifications apportées aux données dans les classes de l'entité LINQ to SQL est fournie par le runtime LINQ to SQL. Le runtime crée les instructions par défaut, (insertion, mise à jour et suppression) basées sur le schéma de la table (les définitions de colonne et les informations de clé primaire). Si vous ne voulez pas du comportement par défaut, vous pouvez configurer le comportement de mise à jour en assignant des procédures stockées spécifiques pour effectuer les insertions, mises à jour et suppressions requises afin de manipuler les données dans votre table. Vous pouvez également le faire lorsque le comportement par défaut n'est pas généré, par exemple lorsque vos classes d'entité mappent aux vues. En outre, vous pouvez substituer le comportement de mise à jour par défaut lorsque la base de données nécessite un accès aux tables à l'aide de procédures stockées.

Notes

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour assigner des procédures stockées afin de substituer le comportement par défaut d'une classe d'entité

  1. Ouvrez le fichier LINQ to SQL dans le concepteur. (Double-cliquez sur le fichier .dbml dans l'Explorateur de solutions.)

  2. Dans l'Explorateur de serveurs/Explorateur de bases de données, développez Procédures stockées et localisez les procédures stockées à utiliser pour l'insertion, la mise à jour et/ou la suppression de la classe d'entité.

  3. Faites glisser la procédure stockée vers le Concepteur O/R.

    La procédure stockée est ajoutée au volet de méthodes comme méthode DataContext. Pour plus d'informations, consultez Méthodes DataContext (Concepteur O/R).

  4. Sélectionnez la classe d'entité pour laquelle vous souhaitez utiliser la procédure stockée afin d'effectuer des mises à jour.

  5. Dans la fenêtre Propriétés, sélectionnez la commande à substituer (Insert, Update ou Delete).

  6. Cliquez sur les points de suspension (…) à côté de l'option Utiliser le runtime pour ouvrir la boîte de dialogue Configurer le comportement.

  7. Sélectionnez Personnaliser.

  8. Sélectionnez la procédure stockée requise dans la liste Personnaliser.

  9. Inspectez la liste d'Arguments de méthode et de Propriétés de classe pour vérifier que les Arguments de méthode mappent aux Propriétés de classe appropriées. Mappez les arguments de méthode d'origine (Original_ArgumentName) aux propriétés d'origine (PropertyName (Original)) pour les commandes de mise à jour et de suppression.

    Notes

    Par défaut, les arguments de méthode sont mappés à des propriétés de classe lorsque les noms correspondent. Si les noms de propriété ont été modifiés et ne correspondent plus entre la table et la classe d'entité, vous devrez peut-être sélectionner la propriété de classe équivalente à mapper si le Concepteur O/R ne peut pas déterminer le mappage correct.

  10. Cliquez sur OK ou Appliquer.

    Notes

    Vous pouvez continuer à configurer le comportement de chaque combinaison classe/comportement tant que vous cliquez sur Appliquer après chaque modification. Si vous modifiez la classe ou le comportement avant de cliquer sur Appliquer, une boîte de dialogue d'avertissement s'affiche pour vous donner la possibilité d'appliquer toutes les modifications.

    Pour rétablir l'utilisation de la logique runtime par défaut pour les mises à jour, cliquez sur les points de suspension à côté de la commande Insert, Update ou Delete dans la fenêtre Propriétés, puis sélectionnez Utiliser le runtime dans la boîte de dialogue Configurer le comportement.

Voir aussi

Tâches

Procédure pas à pas : création de classes LINQ to SQL (Concepteur O/R)

Procédure pas à pas : création de procédures stockées de mise à jour pour la table Customers de Northwind

Concepts

Méthodes DataContext (Concepteur O/R)

Opérations d'insertion, de mise à jour et de suppression (LINQ to SQL)

Autres ressources

Concepteur Objet/Relationnel (Concepteur O/R)

LINQ to SQL