Travailler avec les Bases de Données en C# : PostgreSQL et MongoDB — Un Guide Complet pour les Développeurs .NET
Le développement moderne en C# (.NET) passe rarement sans interaction avec les bases de données. Que vous créiez une application web, un microservice ou un outil de bureau, la capacité à se connecter et à gérer des données est une compétence clé. Dans cet article, nous explorerons le travail avec deux systèmes de gestion de bases de données populaires : le relationnel PostgreSQL et l'orienté documents MongoDB. Vous apprendrez à configurer une connexion, effectuer des opérations CRUD et éviter les erreurs courantes.
1. Connexion à PostgreSQL depuis C# (.NET) avec Npgsql
PostgreSQL est un SGBD relationnel open-source puissant. Pour travailler avec lui dans .NET, on utilise le fournisseur Npgsql. Installez-le via NuGet :
dotnet add package NpgsqlAprès l'installation, une connexion est créée via une chaîne de connexion. Exemple :
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";
using var conn = new NpgsqlConnection(connectionString);conn.Open();
Console.WriteLine("Connexion à PostgreSQL établie !");Exécution de requêtes SQL : CREATE, INSERT, SELECT
Utilisez NpgsqlCommand pour exécuter des commandes. Voyons la création d'une table et l'insertion de données :
using var cmd = new NpgsqlCommand();cmd.Connection = conn;
// Création d'une tablecmd.CommandText = @" CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) UNIQUE )";cmd.ExecuteNonQuery();
// Insertion de données avec paramètrescmd.CommandText = "INSERT INTO users (name, email) VALUES (@name, @email)";cmd.Parameters.AddWithValue("name", "Ivan Petrov");cmd.Parameters.AddWithValue("email", "ivan@example.com");cmd.ExecuteNonQuery();
// Lecture des donnéescmd.CommandText = "SELECT id, name, email FROM users";using var reader = cmd.ExecuteReader();while (reader.Read()){ Console.WriteLine($"{reader["id"]}: {reader["name"]} - {reader["email"]}");}Important : utilisez toujours des requêtes paramétrées pour vous protéger contre les injections SQL.
2. Travailler avec PostgreSQL via Entity Framework Core
Pour un travail de plus haut niveau, Entity Framework Core (EF Core) avec le fournisseur Npgsql est recommandé. Installez les packages :
dotnet add package Microsoft.EntityFrameworkCoredotnet add package Npgsql.EntityFrameworkCore.PostgreSQLCréez un contexte et un modèle :
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 options) => options.UseNpgsql("Host=localhost;Database=mydb;Username=user;Password=pass");}
// Utilisationusing var db = new AppDbContext();db.Database.EnsureCreated();
var user = new User { Name = "Anna Smirnova", Email = "anna@example.com" };db.Users.Add(user);db.SaveChanges();
var users = db.Users.ToList();EF Core génère automatiquement le SQL, gère les migrations et simplifie la maintenance du code.
3. Connexion à MongoDB depuis C# (.NET) avec MongoDB.Driver
MongoDB est une base de données NoSQL qui stocke les données au format de document BSON. Pour C#, utilisez le pilote officiel MongoDB.Driver :
dotnet add package MongoDB.DriverConnexion à un serveur local :
using MongoDB.Driver;using MongoDB.Bson;
var client = new MongoClient("mongodb://localhost:27017");var database = client.GetDatabase("mydb");var collection = database.GetCollection<