Premier exemple

Dapper prend en charge de nombreuses bases de données. Nous allons prendre MySQL comme exemple dans ce tutoriel.

Vous devez d’abord installer MySQL vous‑même.

Une fois MySQL installé, créez une base de données.

Créez ensuite vos tables.

Mise en place

1. Installer les paquets NuGet

Deux paquets doivent être installés simultanément :

  1. Dapper (bibliothèque centrale du micro‑ORM)
Install-Package Dapper
  1. MySql.Data (pilote MySQL qui fournit MySqlConnection)

Dapper ne contient pas de pilote de base de données. Pour accéder à MySQL, vous devez installer un pilote supplémentaire.

2. Créer la table de base de données
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;Langage du code : SQL (Structured Query Language) (sql)

Classe d’entité C#

Respectez les noms des colonnes de la table pour que Dapper fasse le mappage automatiquement.

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int Age { get; set; }
    public string ClassName { get; set; }
}Langage du code : C# (cs)

Règle : le mappage entre colonnes et propriétés ne tient pas compte de la casse, des noms identiques suffisent.

Fichier de configuration

App.config

Correction de l’erreur de la capture d’écran originale : ne mettez pas Oracle dans providerName. Cette configuration est inutile pour MySQL et peut être supprimée.

Configurer la chaîne de connexion

<?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>Langage du code : HTML, XML (xml)

Exemple de code

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>();

        // Lecture de la chaîne de connexion depuis le fichier de configuration
        string connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;

        // 1. Créer une connexion de base de données IDbConnection
        using (IDbConnection db = new MySqlConnection(connStr))
        {
            // 2. Écrire la requête SQL, 3. Exécuter avec la méthode d’extension Dapper pour mapper automatiquement l’entité
            string sql = "SELECT * FROM student";
            studentList = db.Query<Student>(sql).ToList();

            Console.WriteLine($"Nombre total d’étudiants : {studentList.Count}");
        }
        Console.ReadKey();
    }
}Langage du code : C# (cs)

Trois étapes d’exécution Dapper

  1. Créer un objet de connexion base de données IDbConnection (MySqlConnection/SqlConnection)
  2. Écrire manuellement des instructions SQL pour réaliser les opérations CRUD
  3. Passage de la requête SQL et des paramètres aux méthodes d’extension Dapper (Query/Execute)

Injection SQL

Utilisez des requêtes paramétrées pour bloquer complètement les injections SQL.
Construire du SQL par concaténation de chaînes expose à des risques d’injection.

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

Premier exemple

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *