Implémentation d'Entity Framework dans un Projet ASP.NET Core 6

Objectif

Dans cet exercice, vous allez apprendre à implémenter Entity Framework dans un projet ASP.NET Core 6. Vous allez réutiliser les classes d'entités, les services et les repositories définis précédemment dans le programme console pour les partager à travers un projet ASP.NET Core 6. Vous allez configurer le contexte de la base de données, ajouter des services au conteneur d'injection de dépendances, et interagir avec la base de données via des contrôleurs.

Étapes de l'Exercice

1. Création d'un Projet ASP.NET Core 6

Récupérez votre projet Ex05_MVC_Attribut ou créez un nouveau projet ASP.NET Core 6 avec l'option API en utilisant Visual Studio ou la CLI .NET :

dotnet new webapi -n WarehouseAPI
cd WarehouseAPI

2. Ajout des Packages Entity Framework Core

  • Ajoutez les packages nécessaires pour Entity Framework Core et SQL Server
  • 3. Création des Modèles

    Copiez les classes d'entités suivantes de votre programme console vers le dossier Models de votre projet ASP.NET Core :

    Copiez les services suivants de votre programme console vers le dossier Service de votre projet ASP.NET Core :

    4. Configuration du Contexte de la Base de Données

    Dans le dossier Data, créez la classe ApplicationDbContext et configurez les relations et les données initiales.

    5. Configuration du Service dans Program.cs

    Ouvrez le fichier Program.cs et ajoutez le contexte de la base de données au conteneur de services :

    
    // Configure the DbContext
    builder.Services.AddDbContext(options =>
        options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
    
    app.Run();

    Ajoutez la chaîne de connexion à votre fichier appsettings.json :

    {
      "ConnectionStrings": {
        "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=WarehouseDb;Trusted_Connection=True;MultipleActiveResultSets=true"
      },
      ...
    }

    6. Assurez-vous d'utiliser le pattern Repository au sein des différents services.

    Exemple:

    // Services/IRepository.cs
    public interface IRepository where T : class
    {
        Task> GetAll();
        Task GetById(int id);
        Task Add(T entity);
        Task Update(T entity);
        Task Delete(int id);
    }
    // Services/Repository.cs
    using Microsoft.EntityFrameworkCore;
    using WarehouseAPI.Data;
    
    public class Repository : IRepository where T : class
    {
        private readonly ApplicationDbContext _context;
        private readonly DbSet _entities;
    
        public Repository(ApplicationDbContext context)
        {
            _context = context;
            _entities = _context.Set();
        }
    
        public async Task> GetAll()
        {
            return await _entities.ToListAsync();
        }
    
        public async Task GetById(int id)
        {
            return await _entities.FindAsync(id);
        }
    
        public async Task Add(T entity)
        {
            await _entities.AddAsync(entity);
            await _context.SaveChangesAsync();
        }
    
        public async Task Update(T entity)
        {
            _entities.Update(entity);
            await _context.SaveChangesAsync();
        }
    
        public async Task Delete(int id)
        {
            var entity = await _entities.FindAsync(id);
            _entities.Remove(entity);
            await _context.SaveChangesAsync();
        }
    }

    7. Implémentation de fonctionnalités

    A l'aide de ce que vous avez appris précédemment faites en sorte que nous puissons à travers l'application ASP.NET effectuer les opérations suivantes :