From 93461fd35ecd223b22c777de121df4281da38086 Mon Sep 17 00:00:00 2001 From: Anatolii Grynchuk Date: Wed, 6 May 2026 12:43:27 +0300 Subject: [PATCH] fix: eliminate multi-save in batch Add and DeleteAsync(TEntityId) - Add(TEntity[]) now passes save:false in the loop and calls SaveChanges once at the end - DeleteAsync(TEntityId) now calls DoRemove directly instead of Delete(TEntityId) to avoid the double-save from the sync overload chain Ref: #IT-631 --- HrynCo.DAL.EF/Core/BaseEfRepository.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/HrynCo.DAL.EF/Core/BaseEfRepository.cs b/HrynCo.DAL.EF/Core/BaseEfRepository.cs index 8c04d3e..3f05392 100644 --- a/HrynCo.DAL.EF/Core/BaseEfRepository.cs +++ b/HrynCo.DAL.EF/Core/BaseEfRepository.cs @@ -40,7 +40,12 @@ public abstract class BaseEfRepository : { foreach (TEntity entity in entities) { - Add(entity, save); + Add(entity, save: false); + } + + if (save) + { + DbContext.SaveChanges(); } } @@ -84,7 +89,11 @@ public abstract class BaseEfRepository : public async Task DeleteAsync(TEntityId id) { - Delete(id); + TEntity? entity = GetById(id); + if (entity != null) + { + DoRemove(entity); + } await DbContext.SaveChangesAsync(); } -- 2.52.0