Gespeicherte Prozeduren mit Dapper

  1. Gespeicherte Prozedur (Stored Procedure): SQL‑Logik wird direkt in der Datenbank hinterlegt und von der Anwendung aufgerufen.
  2. Wichtiger Punkt für Dapper‑Aufrufe von gespeicherten Prozeduren: CommandType.StoredProcedure festlegen.
  3. Parameter werden über anonyme Klassen oder Entity‑Objekte übergeben; Eingabeparameter der Prozedur werden automatisch zugeordnet.
  4. Beispielszenario: MySQL‑Prozedur erstellen, um student‑Datensätze anhand der ID zu löschen.

MySQL‑Gespeicherte Prozedur anlegen

-- Gespeicherte Prozedur zum Löschen von Schüler‑Datensätzen erstellen
CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_Student_PROC`(IN `id` INT)
BEGIN
    DELETE FROM student WHERE Id = id;
ENDCode-Sprache: JavaScript (javascript)
  • IN id int: Eingabeparameter, nimmt die Primärschlüssel‑ID für den Löschvorgang entgegen
  • BEGIN ~ END: Hauptteil der gespeicherten Prozedur
DROP PROCEDURE IF EXISTS Delete_Student_PROC;

Gespeicherte Prozedur aufrufen

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))
    {
        // Hinweise zu den Parametern:
        // 1. Argument: Name der gespeicherten Prozedur
        // 2. Argument: zu übergebende Werte
        // 3. Argument: Befehlstyp muss explizit auf Gespeicherte Prozedur gesetzt werden
        int affectedRows = db.Execute(
            "Delete_Student_PROC",
            new { id = 2 },
            commandType: CommandType.StoredProcedure
        );

        Console.WriteLine($"Betroffene Zeilen: {affectedRows}");
    }
    Console.ReadKey();
}Code-Sprache: JavaScript (javascript)

Prozedur mit Ergebnisrückgabe

Verwenden Sie .Query<T>(), falls die Prozedur Datensätze abfragt

List<Student> list = db.Query<Student>(
    "GetAllStudent_PROC",
    null,
    commandType: CommandType.StoredProcedure
).ToList();Code-Sprache: PHP (php)
  • Normales SQL: commandType: CommandType.Text (Standardwert, kann weggelassen werden)
  • Gespeicherte Prozedur: commandType: CommandType.StoredProcedure (muss explizit angegeben werden)

Gespeicherte Prozeduren mit Dapper

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert