1. Qu’est‑ce que Dapper
Dapper est un Micro ORM .NET, surnommé le roi des Micro ORM, dont les performances sont proches de l’ADO.NET natif.
ORM : Mappeur Objet‑Relationnel. Il assure le mappage automatique entre les tables de base de données et les entités C#.
Caractéristiques principales :
- Il n’encapsule pas le SQL, vous écrivez vos propres requêtes SQL ;
- Il étend
IDbConnectionau moyen de méthodes d’extension (utilisable directement sur tous les objets de connexion) ; - Léger et extrêmement performant.
Précision : au sens strict c’est un Micro ORM, à la différence des ORM complets comme EF Core. La communauté débat toujours pour savoir s’il s’agit d’un ORM pur.
Protection contre l’injection SQL : utilisez des requêtes paramétrées pour éviter les injections. Concaténer du SQL reste risqué.
Trois étapes d’exécution : créer la connexion base de données → écrire l’instruction SQL → appeler la méthode d’extension Dapper pour exécuter le SQL avec les paramètres.
Fonctionnalités
- Hautes performances, requêtes rapides
- Prend en charge le mappage vers des entités statiques et des objets dynamiques
- Contrôle total sur les instructions SQL
- Gestion des jeux de résultats multiples
- Support natif des procédures stockées
- Fondé sur l’interface
IDbConnection, compatible avec tous les pilotes de bases de données - Insertion en masse (fonctionnalité étendue ; insertion simple native, préférez Dapper.Plus pour les gros volumes)
Installation
Méthode 1 : Console du gestionnaire de paquets NuGet (PMC)
Install-Package Dapper
Méthode 2 : .NET CLI (recommandé pour .NET Core/.NET5+)
dotnet add package Dapper
Méthode 3 : Interface graphique Visual Studio
Explorateur de solutions → clic‑droit sur le projet → Gérer les paquets NuGet, rechercher Dapper et installer.
Important : Dapper n’inclut aucun pilote de base de données !
Pour SQL Server installezMicrosoft.Data.SqlClient; pour MySQL utilisezMySqlConnector.
Exemple
using Dapper;
using Microsoft.Data.SqlClient;
// 1. Créer IDbConnection
string connStr = "votre chaîne de connexion";
using var conn = new SqlConnection(connStr);
// 2. Écrire le SQL
string sql = "SELECT * FROM Article WHERE Id = @Id";
// 3. Exécuter la requête et mapper automatiquement l’entité
var article = conn.QueryFirstOrDefault<Article>(sql, new { Id = 1 });
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
}Langage du code : JavaScript (javascript)
Comparatif
| Framework | Type | Contrôle SQL | Cas d’usage |
|---|---|---|---|
| Dapper | Micro ORM | SQL écrit manuellement | Besoins de performance, requêtes complexes, migration d’anciens projets |
| EF Core | Full ORM | SQL généré automatiquement, SQL natif autorisé | Développement rapide, métier simple, éviter d’écrire du SQL à la main |
Présentation et installation