Projet ASP.NET Core Web API sur Visual Studio : Context

La classe du Context fait le lien entre les entités et la base de données avec EntityFramework.

Dépendances :
Ajoutez à votre projet les packages NuGet :
– Microsoft.EntityFrameworkCore
– Microsoft.EntityFrameworkCore.SqlServer
– Microsoft.EntityFrameworkCore.Tools (pour les lignes de commandes)
Fichier de Context :
Créer un nouveau dossier ‘Repositories’ dans le dossier de l’Application.
Ajouter la nouvelle classe ‘[Nom de l’application]Context.cs’ dans ce dossier.

La classe Context a besoin :
1- Les propriétés ‘DbSet’ : Définir les DbSet pour toutes les classes de Entities.
2- Configurer le context avec ça méthode ‘OnConfiguring’
3- Créer des données par défaut avec la méthode ‘OnModelCreating’ (facultatif)
4- Faire une migration du modèle de données
5- Mettre à jour la base de donnée sur SqlServer

1- Propriétés DbSet : définir les tableaux de la base de données

La classe doit hérité de la classe d’EntityFramework DbContext.

using Microsoft.EntityFrameworkCore;

namespace MyPostApiContext : DbContext

Le context doit être déclaré dans Program.cs avec le builder ‘builder.Service.AddDbContext<[Nom du Context]>();’

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddDbContext<LootManagerLiteContext>();

Pour déclarer les entités qui font l’objet de listes dans les tableaux de la base de données, il faut implémenter les propriétés DbSet qui les représentent.

{
    public DbSet<Post> Posts { get; set; }
    public DbSet<Comment> Comments { get; set; }

2- Méthode OnConfiguring : Configurer le Context

Il s’agit de lui dire que si le Context n’est pas configurer, il doit se configurer avec la chaîne de connexion de SqlServer :

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
   if (!optionsBuilder.IsConfigured)
   {
       optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=[écrire ici le nom de la base de donnée];Trusted_Connection=True;"); // Chaîne de connexion
   }

   base.OnConfiguring(optionsBuilder);
}

Cela permet de créer une base de données avec le nom que vous lui donnerait dans la chaîne de connexion si elle n’a pas déjà été configurée.

3- Méthode OnModelCreating : Données par défaut (facultatif)

Exemple de créations de données par défaut avec la méthode OnModelCreating :

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
       // default data
       var p1 = new Post { Id = 1, Title = "Title 1" };
       var p2 = new Post { Id = 2, Title = "Title 2" };
       var p3 = new Post { Id = 3, Title = "Title 3" };

       var c1 = new Comment { Id = 1, Content = "Content 1, PostId = 1 };
       var c2 = new Comment { Id = 2, Content = "Content 2, PostId = 1 };
       var c3 = new Comment { Id = 3, Content = "Content 3, PostId = 2 };

Utiliser modelBuilder.Entity pour intégrer les données dans le base :

     modelBuilder.Entity<Post>().HasData(new List<Post> { p1, p2, p3 });
     modelBuilder.Entity<Comment>().HasData(new List<Comment> { c1, c2, c3 });

     base.OnModelCreating(modelBuilder);
}

4- Migration

EF Core permet de mettre à jour le schéma de la base de données en conservant les données existantes avec la migration.

Avec le ‘Package Manager Console’, dans le champs ‘Default project:’ se placer dans le projet en cours, puis taper la commande ‘Add-Migration’ suivi du nom que l’on veut donner à cette migration (Exemple ‘Init’ pour la première migration.

Commande Add-Migration
Une migration qui à réussie

4- Mise à jour de la base de donnée

Pour mettre à jour la base de données, utiliser dans la ‘Package Manager Console’ la commande ‘Update-Database’

Update-Database
Done.

Si tout c’est bien passé, on doit retrouver la base de donnée et ses tables dans SqlServer

BDD

Scroll to Top