Я создаю ASP.NET Core API, который принимает список ресурсов для публикации в базе данных.Требование заключается в том, что мне нужно вставить любой действительный ресурс в базу данных и зарегистрировать те, которые генерируют ошибки, в качестве ответа потребителю.
Я хочу вставить каждый ресурс при выполнении итерации списка, чтобы я мог перехватить любой SQLисключение и зарегистрировать его.Я использую «saveChanges ()» для каждого добавленного ресурса, но я заметил, что он пытается переустановить их все (возвращает ошибку «нарушение первичного ключа»);Я предполагаю, что это потому, что это тот же экземпляр DbContext.
foreach (var itemMaster in itemMasterList)
{
if (TryValidateModel(itemMaster))
{
try
{
context.ItemMaster.Add(itemMaster);
context.SaveChanges();
ModelState.Clear();
}
catch (Microsoft.EntityFrameworkCore.DbUpdateException due)
{
if (due.InnerException is SqlException)
{
listaErrores.Add(new ItemErrorDefinition
{
sourceItem = itemMaster,
message = due.InnerException.Message
});
}
}
catch (System.InvalidOperationException)
{
// HTTP request duplicated key
listaErrores.Add(new ItemErrorDefinition
{
sourceItem = itemMaster,
message = "Some message"
});
}
}
else
{
foreach (ModelStateEntry modelState in ViewData.ModelState.Values)
{
foreach (ModelError error in modelState.Errors)
{
listaErrores.Add(new ItemErrorDefinition
{
sourceItem = itemMaster,
message = error.ErrorMessage
});
}
}
ModelState.Clear();
continue;
}
}
Как я могу добиться такого поведения catching Individual-SQLExceptions, используя класс DbContext?
Заранее спасибо!