
Insérer des données avec Entity Framework Core
Ce tutoriel présente deux méthodes d’insertion dans une base de données avec Entity Framework Core : utiliser DbSet ou passer directement par DbContext.
Insérer des données avec DbSet
EF Core facilite l’ajout et l’enregistrement des données. La classe DbSet représente un ensemble d’entités sur lequel effectuer les opérations de création, lecture, mise à jour et suppression, appelées opérations CRUD.
Dans notre projet, la classe AppDbContext, dérivée de DbContext, expose des propriétés DbSet correspondant aux entités et aux tables de la base.
La méthode Add de DbSet ajoute une entité au contexte avec l’état Added. L’appel à SaveChanges() enregistre ensuite ces modifications.
Les entités dans l’état Added sont insérées dans la base. Après l’enregistrement, leur état devient Unchanged.
Par exemple, l’instruction dbContext.Books.Add(book) prépare l’ajout d’un livre.
Pour ajouter un objet Book dont le nom est "CSharp" et la description "Programming with C#", plaçons le code suivant dans Program.cs. Le tutoriel Visual Studio Code présente l’environnement utilisé.
AppDbContext db = new();
Book b = new() { Name = "CSharp", Description = "Programming with C#" };
if (db != null)
{
db.Books?.Add(b);
bool res = (await db.SaveChangesAsync()) > 0;
if(res){
WriteLine("Book Inserted successfully");
}else{
WriteLine("Book not Inserted successfully");
}
}Après l’ajout à l’ensemble Books, il faut appeler DbContext.SaveChanges(), ou await DbContext.SaveChangesAsync() dans un traitement asynchrone, pour enregistrer les changements dans la base.
Insérer des données avec DbContext
La même opération peut être réalisée directement avec la méthode Add du contexte :
AppDbContext db = new();
if (db != null)
{
Book b = new() { Name = "CSharp", Description = "Programming with C#" };
db.Add<Book>(b); // or db.Add(b)
bool res = (await db.SaveChangesAsync()) > 0;
if(res){
WriteLine("Book Inserted successfully");
}else{
WriteLine("Book not Inserted successfully");
}
}La méthode Add prépare les données en mémoire. L’appel à SaveChanges() est nécessaire pour les enregistrer effectivement dans la base.
DbContext.SaveChanges() enregistre les changements suivis par le contexte. Son résultat de type Int32 indique le nombre d’entrées d’état écrites dans la base.
DbContext.SaveChangesAsync() réalise cet enregistrement de manière asynchrone. Elle renvoie une tâche de type Task<Int32> dont le résultat contient le nombre d’entrées d’état enregistrées.
Vidéo de la formation
Ancien aperçu vidéo
Ouvrir la démonstration initialeRessources complémentaires
Continuer à pratiquer
Apprendre avec un projet complet.
Retrouvez les formations et le code source qui accompagnent les tutoriels.
Découvrir les formations ↗