Я пишу решение WebApi, и архитектура выполнена таким образом, что только уровень контроллера может зафиксировать (сохранить изменения в БД), используя единицу работы.Мне нужно было сделать пакетную вставку (менее 100 сущностей).Я попытался перейти к следующему
foreach (var req in Reqs)
{
await unitOfWork.GetService<IReqService>().AddNewReq(req);
try
{
await unitOfWork.Commit();
}
catch (Exception e) { }
}
Но это не удается, если один из объектов не может быть зафиксирован, я понял, что проблема заключается в том, что у меня одна плохая сущность, связанная с БД, каждый раз, когда я будупопытайтесь зафиксировать, я буду фиксировать все, что еще не зафиксировано, включая новую сущность, которую я пытаюсь добавить И те, которые не удалось зафиксировать.То есть ничего не будет добавлено.
Я читал о том, как решить эту проблему, и читал кое-что об отсоединении сущностей, которые терпят неудачу, но я не уверен, что это будет способ сделать это с такой архитектурой.
Я думаю, что уместно разместить код коммитов так:
public async Task Commit()
{
if (_tenantDatabase != null)
await _tenantDatabase.SaveChangesAsync();
}