Procedimentos armazenados com Dapper

  1. Procedimento armazenado (Stored Procedure): lógica SQL criada previamente no banco de dados, chamada diretamente pela aplicação.
  2. Ponto‑chave para chamar procedimentos armazenados no Dapper: definir CommandType.StoredProcedure.
  3. Os parâmetros são passados com classes anônimas ou objetos de entidade; os parâmetros de entrada do procedimento são mapeados automaticamente.
  4. Cenário de exemplo: criar um procedimento armazenado MySQL para excluir registros da tabela student por ID.

Criar procedimento armazenado MySQL

-- Criar procedimento armazenado para exclusão de estudante
CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_Student_PROC`(IN `id` INT)
BEGIN
    DELETE FROM student WHERE Id = id;
ENDCode language: JavaScript (javascript)
  • IN id int: parâmetro de entrada, recebe o valor da chave primária para exclusão
  • BEGIN ~ END: corpo principal do procedimento armazenado
DROP PROCEDURE IF EXISTS Delete_Student_PROC;

Invocar o procedimento armazenado

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))
    {
        -- Observações sobre os parâmetros:
        -- 1º argumento: nome do procedimento armazenado
        -- 2º argumento: parâmetros de entrada
        -- 3º argumento: é obrigatório definir o tipo de comando como procedimento armazenado
        int affectedRows = db.Execute(
            "Delete_Student_PROC",
            new { id = 2 },
            commandType: CommandType.StoredProcedure
        );

        Console.WriteLine($"Linhas afetadas: {affectedRows}");
    }
    Console.ReadKey();
}Code language: JavaScript (javascript)

Procedimento armazenado com retorno de resultados

Use .Query<T>() quando o procedimento retornar dados de consulta

List<Student> list = db.Query<Student>(
    "GetAllStudent_PROC",
    null,
    commandType: CommandType.StoredProcedure
).ToList();Code language: PHP (php)
  • SQL comum: commandType: CommandType.Text (valor padrão, pode ser omitido)
  • Procedimento armazenado: commandType: CommandType.StoredProcedure (precisa ser declarado explicitamente)

Procedimentos armazenados com Dapper

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *