Introduction : pourquoi un développeur C# doit-il connaître PostgreSQL et MongoDB ?
Le développement moderne en C# (.NET) implique rarement de travailler sans bases de données. Le choix entre un SGBD relationnel (SQL) et un SGBD orienté documents (NoSQL) dépend de l'architecture du projet. PostgreSQL est une base relationnelle puissante avec prise en charge de JSON, tandis que MongoDB est une base document flexible pour les prototypes rapides et le Big Data. Dans cet article, nous allons aborder la connexion et les opérations de base avec les deux systèmes à partir de C#.
1. Travailler avec PostgreSQL en C#
Pour interagir avec PostgreSQL dans .NET, on utilise le fournisseur Npgsql. Il prend en charge Entity Framework Core et l'exécution directe de requêtes SQL.
1.1. Installation et connexion
Installez le package NuGet :
dotnet add package Npgsql
Exemple de chaîne de connexion :
Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass
1.2. Opérations CRUD via Npgsql
Créons une table Users et effectuons des opérations de base :
using Npgsql;
var connString = "Host=localhost;Database=testdb;Username=postgres;Password=123";
await using var conn = new NpgsqlConnection(connString);
await conn.OpenAsync();
// Création de la table
var createCmd = new NpgsqlCommand(@"
CREATE TABLE IF NOT EXISTS Users (
Id SERIAL PRIMARY KEY,
Name VARCHAR(100),
Age INT
)", conn);
await createCmd.ExecuteNonQueryAsync();
// Insertion de données
var insertCmd = new NpgsqlCommand(
"INSERT INTO Users (Name, Age) VALUES (@n, @a)", conn);
insertCmd.Parameters.AddWithValue("n", "Алексей");
insertCmd.Parameters.AddWithValue("a", 30);
await insertCmd.ExecuteNonQueryAsync();
// Lecture de données
var readCmd = new NpgsqlCommand("SELECT * FROM Users", conn);
var reader = await readCmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
Console.WriteLine($"{reader["Id"]}: {reader["Name"]}, {reader["Age"]} ans");
}
1.3. Utilisation d'Entity Framework Core
Installez le package :
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
Définissez le modèle et le contexte :
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseNpgsql("Host=localhost;Database=testdb;Username=postgres;Password=123");
}
CRUD via EF Core :
using var db = new AppDbContext();
// Ajout
db.Users.Add(new User { Name = "Мария", Age = 25 });
await db.SaveChangesAsync();
// Lecture
var users = await db.Users.ToListAsync();
foreach (var u in users)
Console.WriteLine($"{u.Name} - {u.Age}");
// Mise à jour
var user = await db.Users.FirstAsync(u => u.Name == "Мария");
user.Age = 26;
await db.SaveChangesAsync();
// Suppression
db.Users.Remove(user);
await db.SaveChangesAsync();
2. Travailler avec MongoDB en C#
MongoDB stocke les données au format BSON (JSON binaire). Pour C#, on utilise le pilote MongoDB.Driver.
2.1. Installation et connexion
Installez le package NuGet :
dotnet add package MongoDB.Driver
Connexion à un serveur local :
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("testdb");
var collection = database.GetCollection<BsonDocument>("users");
2.2. Opérations CRUD
Travailler avec des documents via BsonDocument :
// Création d'un document
var doc = new BsonDocument
{
{ "name", "Иван" },
{ "age", 28 },
{ "skills", new BsonArray { "C#", "MongoDB", "Docker" } }
};
await collection.InsertOneAsync(doc);