Il micro-ORM per query ad alte performance
Cos'è Dapper e quando usarlo al posto di Entity Framework
Tutto quello che devi sapere su Dapper: il micro-ORM per .NET che offre velocità e controllo totale sulle query SQL.
Dapper è un micro-ORM per .NET sviluppato dal team di Stack Overflow, progettato per offrire performance estreme e controllo totale sulle query SQL.
A differenza di Entity Framework che genera SQL automaticamente, Dapper ti permette di scrivere le tue query SQL e mappa automaticamente i risultati su oggetti C#.
Se le performance sono la tua priorità e vuoi il pieno controllo su ogni query, Dapper è lo strumento giusto.
Come funziona Dapper
Dapper è un insieme di metodi di estensione su IDbConnection. Non ha un modello a oggetti, non traccia le entità, non genera SQL: fa una cosa sola e la fa alla perfezione — mappa i risultati SQL su oggetti C#.
Funzionalità principali
| Feature | Descrizione |
|---|---|
| Query | Esegue una query SQL e mappa i risultati su una lista di oggetti tipizzati. |
| Execute | Esegue INSERT, UPDATE, DELETE e stored procedure con parametri tipizzati. |
| Multi-mapping | Mappa join SQL su oggetti C# correlati in una singola query. |
| Multi-result | Legge risultati multipli da una singola query (QueryMultiple). |
| Async nativo | QueryAsync, ExecuteAsync per operazioni non bloccanti. |
| Parametri tipizzati | Prevenzione SQL injection automatica con parametri oggetto. |
Dapper è velocissimo perché non ha overhead: niente change tracking, niente lazy loading, niente generazione SQL. Solo mapping puro.
Dapper vs Entity Framework: quando usare quale
| Aspetto | Dapper | Entity Framework Core |
|---|---|---|
| Performance | Quasi nativo (poche µs di overhead) | Buone (con overhead per tracking) |
| SQL | Scritto manualmente (pieno controllo) | Generato da LINQ (conveniente) |
| Migrations | Non supportate (usa tool esterni) | Integrate con Code-First |
| Change tracking | No (più veloce) | Sì (più comodo per CRUD) |
| Learning curve | Minima (conosci SQL, conosci Dapper) | Media (LINQ, navigation, conventions) |
| Batch operations | Via SQL diretto | ExecuteUpdate/ExecuteDelete (EF 7+) |
| Caching | Da implementare | Query caching integrato |
Quando scegliere Dapper
- Query complesse con join multipli dove vuoi SQL ottimizzato a mano
- Hot path con requisiti di latenza stringenti
- Applicazioni read-heavy con stored procedure esistenti
- Microservizi leggeri dove l'overhead di EF non è giustificato
Quando scegliere Entity Framework
- Applicazioni CRUD standard dove la produttività è prioritaria
- Progetti che beneficiano di migrations automatiche
- Team che preferiscono LINQ a SQL puro
Vantaggi di Dapper
Performance imbattibili — Overhead minimo rispetto a ADO.NET puro. Usato in produzione da Stack Overflow.
Semplicità — Un singolo pacchetto NuGet, pochi metodi, zero configurazione. Impari in un'ora.
Controllo SQL — Scrivi esattamente la query che vuoi. Nessuna sorpresa nella SQL generata.
Compatibilità — Funziona con qualsiasi database che supporti ADO.NET: SQL Server, PostgreSQL, MySQL, SQLite.
Async-first — Supporto completo per async/await su tutte le operazioni.
Inizia con Dapper: risorse
Vuoi padroneggiare l'accesso ai dati in .NET?
Scegli lo strumento giusto per ogni progetto
Con il nostro corso .NET imparerai Dapper, Entity Framework e le best practice per gestire i dati in applicazioni enterprise.
Domande frequenti
Dapper è un micro-ORM per .NET sviluppato dal team di Stack Overflow. Mappa i risultati delle query SQL su oggetti C# con performance vicine ad ADO.NET puro.
Sì, Dapper è completamente open-source e gratuito, disponibile come pacchetto NuGet. È uno dei micro-ORM più usati nell'ecosistema .NET.
Dapper richiede SQL manuale ma offre performance superiori. Entity Framework genera SQL da LINQ ed è più comodo per operazioni CRUD standard ma con overhead maggiore.
Usa Dapper quando le performance sono critiche, quando hai query complesse da ottimizzare a mano, o quando lavori con stored procedure e database legacy.
Il modo migliore è seguire un percorso strutturato con progetti pratici. Il nostro corso .NET include Dapper, Entity Framework e le best practice per la gestione dati.