DEV Community

Cover image for Dapper no .NET: simplicidade e performance no acesso a dados
Danilo Itagyba
Danilo Itagyba

Posted on

Dapper no .NET: simplicidade e performance no acesso a dados

Quando pensamos em acesso a banco de dados no .NET, o Entity Framework costuma ser a escolha padrão. Ele oferece recursos avançados de ORM, mas nem sempre precisamos de toda essa complexidade. Em cenários onde performance e simplicidade são prioridade, o Dapper se destaca como alternativa leve e eficiente.


O que é o Dapper?

O Dapper é uma biblioteca open source criada pela equipe do Stack Overflow. Ele é conhecido como um micro-ORM, pois não tenta abstrair completamente o banco de dados. Em vez disso, fornece um jeito simples e rápido de mapear resultados de queries SQL para objetos C#.

  • 📦 Pacote: Dapper (disponível no NuGet)
  • ⚡ Performance: próximo do ADO.NET puro, mas com muito menos código
  • 🎯 Ideal quando você já tem queries SQL prontas e quer apenas mapear resultados para objetos

Instalação

No seu projeto .NET, basta rodar:

dotnet add package Dapper

Primeiro Exemplo com Dapper

Suponha que temos uma tabela Products no banco:

CREATE TABLE Products (
Id INT PRIMARY KEY,
Name NVARCHAR(100),
Price DECIMAL(10,2)
)

E uma classe em C#:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}

Com Dapper, podemos buscar todos os produtos assim:

using System.Data.SqlClient;
using Dapper;

string connectionString = "Server=.;Database=MyDb;Trusted_Connection=True;";

using (var connection = new SqlConnection(connectionString))
{
    var products = connection.Query<Product>("SELECT * FROM Products").ToList();

    foreach (var p in products)
    {
        Console.WriteLine($"{p.Id} - {p.Name} - {p.Price:C}");
    }
}
Enter fullscreen mode Exit fullscreen mode

👉 Em apenas duas linhas de código (Query + ToList()), já temos os dados do banco mapeados para objetos.

Inserindo Dados com Dapper:

var sql = "INSERT INTO Products (Name, Price) VALUES (@Name, @Price)";

var newProduct = new Product { Name = "Notebook", Price = 3500.00m };

using (var connection = new SqlConnection(connectionString))
{
    connection.Execute(sql, newProduct);
}
Enter fullscreen mode Exit fullscreen mode

Aqui o Dapper faz o binding automático das propriedades Name e Price do objeto para os parâmetros @name e @price da query.

Vantagens do Dapper
✔️ Simplicidade – menos código para mapear dados
✔️ Performance – quase tão rápido quanto ADO.NET puro
✔️ Flexibilidade – você escreve o SQL, o Dapper só faz o mapeamento
✔️ Integração fácil – funciona bem junto com Entity Framework, se quiser misturar

Quando usar o Dapper?

Projetos que exigem alta performance.

Sistemas que já usam queries SQL prontas.

Aplicações pequenas ou médias onde um ORM completo seria “overkill”.

Microserviços, APIs e jobs que só precisam de consultas rápidas.

Se você precisa de lazy loading, migrations ou LINQ avançado, provavelmente o Entity Framework continua sendo a melhor opção.

Conclusão

O Dapper é a escolha perfeita quando você quer controle total sobre suas queries SQL, mas não quer lidar com toda a verbosidade do ADO.NET. Ele equilibra performance, simplicidade e produtividade de uma forma difícil de ignorar.

Se o seu projeto .NET precisa de acesso a dados rápido e direto ao ponto, vale a pena experimentar o Dapper.

Top comments (0)