Travailler avec les bases de données en C# : PostgreSQL et MongoDB

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Blogs

Book Recommendations