Ich verwende EF6 und mein Basis-Repository Save () sieht so aus
public void Save()
{
try
{
Context.SaveChanges();
}
catch (DbEntityValidationException ex)
{
//Do Stuff
}
catch (Exception exception)
{
//Do stuff.
}
else
{
throw;
}
}
DbEntityValidationException
ist ein erwarteter Fehler von EF, wenn das Speichern des Objekts ungültig ist. Jetzt, da ich mich in einem neuen .NET Core 2-Projekt befinde und wissen muss, welcher Entitätsvalidierungsfehlertyp in EF Core erwartet wird.
Wenn Sie sich die Github-Probleme ansehen, gibt es in Entity Framework Core kein Äquivalent zu DbEntityValidationException
. Es gibt ein Blog (verlinkt von Ausgabe # 9662 auf Github), das der Vollständigkeit halber ein Codebeispiel für die Durchführung der Validierungslogik selbst enthält:
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
wirft ein ValidationException
, wenn die Validierung fehlschlägt, was Sie entsprechend behandeln können.
Das verknüpfte Problem enthält weitere Informationen, falls Probleme mit den Validierungsattributen auftreten.