
Niveau :


4 minutes de lecture
L’arrivée d’EF Core 7 et son lots de nouveautés apportent un changement conséquent sur la mise à jour et la suppression en cascade des données. Grace aux deux nouvelles méthodes ExecuteUpdate et ExecuteDelete, EF Core 7 permet d’écrire une requête de mise à jour ou de suppression tout en augmentant de manière significative la performance.
C’était mieux avant ?
Avec EF Core 6, pour supprimer ou mettre à jour des données en cascade, nous passions par les méthodes d’update et delete classique. EF ChangeTracker s’occupait du suivi des modification des entités chargées en mémoire et il suffisait d’appeler SaveChanges ou SaveChangesAsync pour appliquer ces changements.
Pour chaque changement ou suppression d’entités, un appel est fait à la base sous forme de requête SQL. Plus vous avez de données et plus vous augmentez les appels.
Avec EF Core 7
Avec EF Core 7, si nous reprenons le même exemple que ci-dessus mais en utilisant les méthodes ExecuteUpdateAsync et ExecuteDeleteAsync comme ci dessous :
[HttpPut]
public async Task<IActionResult> BulkUpdateContact()
{
await _context.Contacts.Where(c => c.email == null)
.ExecuteUpdateAsync(item => item.SetProperty(c => c.email, c => "unemail"));
return Ok();
}
[HttpDelete]
public async Task<IActionResult> BulkDeleteContact()
{
await _context.Contacts.Where(c => c.email == null).ExecuteDeleteAsync();
return Ok();
}

La mise à jour et la suppression impact dans mon exemple deux entités et pourtant un seul appel de type SQL est fait pour chaque méthode.


