1. ¿Qué es Dapper
Dapper es un Micro ORM para .NET, conocido como el rey de los Micro ORM, con un rendimiento muy cercano al ADO.NET nativo.
ORM: Mapeador Objeto‑Relacional. Realiza el mapeo automático entre tablas de base de datos y entidades C#.
Características principales:
- No encapsula SQL, el desarrollador escribe las sentencias SQL;
- Extiende
IDbConnectionmediante métodos de extensión (utilizable directamente en cualquier objeto de conexión); - Ligero y con un rendimiento muy elevado.
Nota estricta: se trata de un Micro ORM, distinto de frameworks ORM completos como EF Core. La comunidad debate si se considera un ORM puro.
Protección contra inyección SQL: usa consultas parametrizadas para evitar inyecciones. Concatenar cadenas SQL sigue siendo arriesgado.
Tres pasos de ejecución: crear la conexión de base de datos → escribir la sentencia SQL → invocar el método de extensión de Dapper para ejecutar SQL con sus parámetros.
Características
- Alto rendimiento, consultas rápidas
- Admite mapeo a entidades estáticas y objetos dinámicos
- Control total sobre las sentencias SQL
- Soporte para consultas con múltiples conjuntos de resultados
- Soporte nativo de procedimientos almacenados
- Basado en la interfaz
IDbConnection, compatible con todos los controladores de bases de datos - Inserción masiva (función extendida; inserción simple nativa, para grandes volúmenes recomienda Dapper.Plus)
Instalación
Método 1: Consola del Administrador de paquetes NuGet (PMC)
Install-Package Dapper
Método 2: .NET CLI (recomendado para .NET Core/.NET5+)
dotnet add package Dapper
Método 3: Interfaz gráfica de Visual Studio
Explorador de soluciones → clic derecho sobre el proyecto → Administrar paquetes NuGet, buscar Dapper e instalar.
Aviso importante: Dapper no incluye controladores de base de datos!
Para SQL Server instalaMicrosoft.Data.SqlClient; para MySQL usaMySqlConnector.
Ejemplo
using Dapper;
using Microsoft.Data.SqlClient;
// 1. Crear IDbConnection
string connStr = "tu cadena de conexión";
using var conn = new SqlConnection(connStr);
// 2. Escribir SQL
string sql = "SELECT * FROM Article WHERE Id = @Id";
// 3. Ejecutar consulta y mapear automáticamente la entidad
var article = conn.QueryFirstOrDefault<Article>(sql, new { Id = 1 });
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
}Lenguaje del código: JavaScript (javascript)
Comparación
| Framework | Tipo | Control SQL | Casos de uso |
|---|---|---|---|
| Dapper | Micro ORM | SQL escrito manualmente | Requisitos de alto rendimiento, consultas complejas, modernización de proyectos antiguos |
| EF Core | Full ORM | SQL generado automáticamente, admite SQL nativo | Desarrollo rápido, lógica de negocio simple, evitar escribir SQL manual |
Introducción e instalación