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.


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’


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

