.Net Core 2-EF Core обработка ошибок сохранение изменений
Я использую EF6, и мой базовый репозиторий Save () выглядит так
public void Save()
{
try
{
Context.SaveChanges();
}
catch (DbEntityValidationException ex)
{
//Do Stuff
}
catch (Exception exception)
{
//Do stuff.
}
else
{
throw;
}
}
DbEntityValidationException
- ожидаемая ошибка от EF, если сохранение объекта недопустимо. Теперь, когда я нахожусь в новом проекте .NET Core 2, и мне нужно знать, что такое ожидаемый тип ошибки проверки сущности в EF Core.
1 ответов
просматривая проблемы Github, нет DbEntityValidationException
эквивалент в ядре Entity Framework. Есть блог (связано с вопросом #9662 на Github), который дает пример кода для выполнения логики проверки самостоятельно, включенный здесь для полноты:
class MyContext : DbContext
{
public override int SaveChanges()
{
var entities = from e in ChangeTracker.Entries()
where e.State == EntityState.Added
|| e.State == EntityState.Modified
select e.Entity;
foreach (var entity in entities)
{
var validationContext = new ValidationContext(entity);
Validator.ValidateObject(entity, validationContext);
}
return base.SaveChanges();
}
}
Validator.ValidateObject
бросит ValidationException
если проверка не выполняется, что вы можете обработать соответствующим образом.
В связанной проблеме есть немного больше информации, если вы столкнетесь с проблемы с атрибутами проверки.