Chargement...

Introduction à Entity Framework Core en C#

Apprenez les bases d’Entity Framework Core en C#, y compris DbContext et les opérations de base avec la base de données.

Entity Framework Core (EF Core) est un mappeur objet-relationnel (ORM) dans l’écosystème .NET, qui permet d’effectuer des opérations sur la base de données avec une approche orientée objet. Avec EF Core, les tables de la base de données peuvent être gérées via des classes C# sans écrire de requêtes SQL brutes. Dans cet article, nous allons couvrir les bases d’EF Core : DbContext, définition des entités et opérations CRUD de base. (Nous n’entrerons pas dans les détails spécifiques à MS-SQL, uniquement l’approche générale d’EF Core.)


Avantages d’EF Core


Définir une entité

Dans EF Core, une table de base de données est généralement représentée par une classe C#. Les propriétés de la classe correspondent aux colonnes de la table.


public class Product
{
    public int Id { get; set; }      // Clé primaire
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
}

La classe DbContext

DbContext est le cœur d’EF Core. Elle gère la connexion à la base de données et les interactions avec les tables.


using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Configurer le fournisseur de base de données ici
        optionsBuilder.UseInMemoryDatabase("TestDb");
    }
}

Remarque : Dans cet exemple, nous utilisons InMemoryDatabase pour simplifier.


Opérations CRUD de base

Avec EF Core, les opérations Create, Read, Update, Delete peuvent être effectuées facilement.


using (var db = new AppDbContext())
{
    // CREATE
    db.Products.Add(new Product { Name = "Ordinateur portable", Price = 1500 });
    db.SaveChanges();

    // READ
    var products = db.Products.ToList();
    foreach (var p in products)
        Console.WriteLine($"{p.Id} - {p.Name} - {p.Price}");

    // UPDATE
    var product = db.Products.First();
    product.Price = 1400;
    db.SaveChanges();

    // DELETE
    db.Products.Remove(product);
    db.SaveChanges();
}

Requêtes avec LINQ

EF Core s’intègre parfaitement avec LINQ (Language Integrated Query). Cela permet d’écrire des requêtes puissantes et typées sans SQL brut.


// Sélectionner les produits plus chers que 1000
using (var db = new AppDbContext())
{
    var expensive = db.Products
                      .Where(p => p.Price > 1000)
                      .OrderBy(p => p.Name);

    foreach (var item in expensive)
        Console.WriteLine(item.Name);
}

Le concept de Migrations

EF Core propose les Migrations pour créer ou mettre à jour le schéma de la base de données directement depuis le code. Les modifications apportées au code sont suivies et appliquées à la base avec des migrations.


// Exemples de commandes (à exécuter en CLI)
// dotnet ef migrations add InitialCreate
// dotnet ef database update

Résumé (TL;DR)

  • EF Core simplifie les opérations sur la base de données grâce à l’approche ORM.
  • DbContext : gère la connexion à la base et les tables.
  • Entity : classes C# représentant les tables.
  • CRUD (Créer, Lire, Mettre à jour, Supprimer) est facile à réaliser.
  • LINQ permet d’écrire des requêtes typées.
  • Migrations permettent de gérer le schéma de la base depuis le code.

Articles connexes