ORM pour C# (.NET) : comparaison et exemples
Dans le développement moderne sur la plateforme .NET, le travail avec les bases de données se fait rarement sans l'utilisation du mappage objet-relationnel (ORM). Les bibliothèques ORM permettent aux développeurs d'interagir avec les bases de données relationnelles via un code orienté objet, évitant ainsi d'avoir à écrire manuellement des requêtes SQL complexes. Dans cet article, nous comparerons les trois ORM les plus populaires pour C# : Entity Framework Core, Dapper et LINQ to SQL, et nous fournirons des exemples pratiques d'utilisation.
1. Entity Framework Core (EF Core)
EF Core est un ORM moderne et multiplateforme de Microsoft, qui est l'évolution d'Entity Framework 6. Il prend en charge différents SGBD (SQL Server, PostgreSQL, SQLite, MySQL, etc.) et offre des fonctionnalités puissantes pour travailler avec les données.
Caractéristiques principales :
- Code First / Database First — vous pouvez créer la base de données à partir du code ou inversement.
- Requêtes LINQ — les requêtes sont écrites en C#, et EF Core les convertit en SQL.
- Migrations — gestion automatique du schéma de la base de données.
- Chargement différé (Lazy Loading) — chargement automatique des données associées.
Exemple de code (Code First) :
using Microsoft.EntityFrameworkCore;using System.Collections.Generic;
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=.;Database=MyDb;Trusted_Connection=True;"); }}
// Utilisationusing (var db = new AppDbContext()){ // Ajout d'un utilisateur var user = new User { Name = "Иван", Email = "ivan@example.com" }; db.Users.Add(user); db.SaveChanges();
// Requête via LINQ var users = db.Users.Where(u => u.Name.Contains("Иван")).ToList();}Avantages : Haute performance, fonctionnalités riches, prise en charge des migrations, communauté active. Inconvénients : Empreinte mémoire plus importante, complexité lors de la configuration de requêtes complexes.
2. Dapper
Dapper est un micro-ORM léger créé par l'équipe de Stack Overflow. Il ne fournit pas de mappage complet, mais permet d'exécuter des requêtes SQL directement, en mappant automatiquement les résultats vers des objets C#.
Caractéristiques principales :
- Performance maximale — Dapper est considéré comme l'un des ORM les plus rapides pour .NET.
- SQL direct — vous écrivez les requêtes en SQL pur.
- Minimalisme — pas de migrations, de contextes ni de configurations complexes.
Exemple de code :
using Dapper;using System.Data.SqlClient;using System.Linq;
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
// Utilisationstring connectionString = "Server=.;Database=MyDb;Trusted_Connection=True;";using (var connection = new SqlConnection(connectionString)){ // Exécution d'une requête SQL var users = connection.Query<User>("SELECT * FROM Users WHERE Name = @Name", new { Name = "Иван" }).ToList();
// Exécution d'une procédure stockée var result = connection.Query<User>("GetUsers", commandType: System.Data.CommandType.StoredProcedure);}Avantages : Grande vitesse, simplicité, consommation minimale de ressources. Inconvénients : Absence de migrations, nécessité d'écrire le SQL manuellement, pas de chargement automatique des entités associées.
3. LINQ to SQL
Aussi dans la bibliothèque
Travailler avec CSV en Java : bibliothèques OpenCSV et Apache Commons CSV
Internationalisation (i18n) en Java : guide complet avec exemples
Travailler avec Excel en Rust : bibliothèques pour la lecture et l'écriture
Envoi de SMS en PHP : API des bibliothèques sms.ru et autres services
Envoi de SMS en C++ : API bibliothèque LibCurl et requêtes REST
Recommendations