I'm used to Entity Framework 6 and my base repository Save() looks like this:
public void Save()
{
try
{
Context.SaveChanges();
}
catch (DbEntityValidationException ex)
{
// Do stuff
}
catch (Exception exception)
{
// Do stuff
}
else
{
throw;
}
}
DbEntityValidationException
is an expected error from Entity Framework if the object save is invalid. Now that I'm on a new .NET Core 2 project. What is the expected entity validation error type in Entity Framework Core?
Looking through the Github issues, there is no DbEntityValidationException
equivalent in Entity Framework Core. There's a blog (linked from issue #9662 on Github), that gives a code example for performing the validation logic yourself, included here for completeness:
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
will throw a ValidationException
if validation fails, which you can handle accordingly.
There's a bit more information in the linked issue in case you run into issues with the validation attributes.