Procédures stockées avec Dapper

  1. Procédure stockée (Stored Procedure) : logique SQL écrite à l’avance dans la base de données, appelée directement par l’application.
  2. Point‑clé pour appeler une procédure stockée avec Dapper : indiquer CommandType.StoredProcedure.
  3. Passez les paramètres par classe anonyme ou objet entité ; les paramètres d’entrée de la procédure stockée sont mappés automatiquement.
  4. Exemple pratique : créer une procédure stockée MySQL pour supprimer un enregistrement étudiant par identifiant.

Créer une procédure stockée MySQL

-- Créer la procédure stockée de suppression d'étudiant
CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_Student_PROC`(IN `id` INT)
BEGIN
    DELETE FROM student WHERE Id = id;
END
  • IN id int : paramètre d’entrée, reçoit l’identifiant de clé primaire à supprimer
  • BEGIN ~ END : corps principal de la procédure stockée
DROP PROCEDURE IF EXISTS Delete_Student_PROC;

Appeler la procédure stockée

using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;

static void Main(string[] args)
{
    var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
    using (IDbConnection db = new MySqlConnection(connStr))
    {
        -- Notes sur les paramètres:
        -- 1er argument: nom de la procédure stockée
        -- 2e argument: paramètres à transmettre
        -- 3e argument: il faut explicitement définir le type de commande sur procédure stockée
        int affectedRows = db.Execute(
            "Delete_Student_PROC",
            new { id = 2 },
            commandType: CommandType.StoredProcedure
        );

        Console.WriteLine($"Nombre de lignes affectées : {affectedRows}");
    }
    Console.ReadKey();
}Langage du code : JavaScript (javascript)

Procédure stockée qui renvoie des résultats

Si la procédure stockée retourne des données de requête, utilisez .Query<T>()

List<Student> list = db.Query<Student>(
    "GetAllStudent_PROC",
    null,
    commandType: CommandType.StoredProcedure
).ToList();Langage du code : PHP (php)
  • SQL classique : commandType: CommandType.Text (valeur par défaut, peut être omis)
  • Procédure stockée : commandType: CommandType.StoredProcedure (à indiquer obligatoirement)

Procédures stockées avec Dapper

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *