Primer ejemplo

Dapper es compatible con múltiples bases de datos, en esta guía usaremos MySQL como ejemplo.

En primer lugar, debes instalar MySQL por tu cuenta.

Una vez instalado MySQL, tienes que crear una base de datos.

Luego crea las tablas correspondientes.

Configuración inicial

1. Instalar paquetes NuGet

Es obligatorio instalar los dos paquetes siguientes:

  1. Dapper (biblioteca principal del micro‑ORM)
Install-Package Dapper
  1. MySql.Data (controlador para MySQL, proporciona MySqlConnection)

Dapper no trae controladores de base de datos integrados. Para conectarte a MySQL debes instalar este controlador de forma separada.

2. Crear tabla de la base de datos
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `StudentID` int NOT NULL AUTO_INCREMENT,
  `StudentName` text,
  `Age` int,
  `ClassName` text,
  PRIMARY KEY (`StudentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;Lenguaje del código: SQL (Structured Query Language) (sql)

Clase de entidad C#

Si los nombres de las propiedades coinciden con los campos de la tabla, Dapper hará el mapeo automáticamente.

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int Age { get; set; }
    public string ClassName { get; set; }
}Lenguaje del código: C# (cs)

Regla: el mapeo no distingue entre mayúsculas y minúsculas, basta con que los nombres de campos y propiedades coincidan.

Archivo de configuración

App.config

Corrección de error de la captura original: no asignes Oracle a providerName. MySQL no requiere esta configuración, puedes eliminarlo directamente.

Configurar la cadena de conexión

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <connectionStrings>
    <add name="StudentConnection"
         connectionString="Server=localhost;Database=mydb;Uid=root;Pwd=root"/>
  </connectionStrings>
</configuration>Lenguaje del código: HTML, XML (xml)

Ejemplo práctico

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

class Program
{
    static void Main(string[] args)
    {
        List<Student> studentList = new List<Student>();

        // Leer cadena de conexión desde el archivo de configuración
        string connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;

        // 1. Crear conexión de base de datos IDbConnection
        using (IDbConnection db = new MySqlConnection(connStr))
        {
            // 2. Escribir sentencia SQL, 3. Ejecutar consulta con método de extensión Dapper y mapeo automático de entidades
            string sql = "SELECT * FROM student";
            studentList = db.Query<Student>(sql).ToList();

            Console.WriteLine($"Total de estudiantes: {studentList.Count}");
        }
        Console.ReadKey();
    }
}Lenguaje del código: C# (cs)

Tres pasos del flujo de trabajo de Dapper

  1. Instanciar el objeto de conexión de base de datos IDbConnection (MySqlConnection/SqlConnection)
  2. Escribir sentencias SQL manualmente para implementar operaciones CRUD
  3. Pasar la sentencia SQL y sus parámetros a los métodos de extensión de Dapper (Query/Execute)

Inyección SQL

El uso de consultas parametrizadas evita por completo la inyección SQL.
Construir SQL mediante concatenación de cadenas genera riesgos de inyección.

string sql = "SELECT * FROM student WHERE StudentID = @Id";
var stu = db.QueryFirstOrDefault<Student>(sql, new { Id = 1 });Lenguaje del código: C# (cs)

Primer ejemplo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *