Versuchen Sie einige Geschäftslogik in C# durch Überschreiben der EF SaveChanges-Methode.
Die Idee ist es, einige fortgeschrittene Berechnungen über Dinge wie, wenn dieses Feld geändert hat, dieses Feld zu aktualisieren. Und dieses Feld ist die Summe der Unterklasse abzüglich einiger anderer Felder, Sie kennen fortgeschrittenen Geschäftsmüll.Testen von EF Save Changes Modifiers. Übergabe in DbPropertyValues
Da es wirklich kompliziert ist, wollen wir das Ausfüllen testen. Hinzufügen von Tests arbeiten toll, aber die Aktualisierung, die wir scheinen nicht zu testen, da wir eine Schnittstelle geschrieben haben, in dem das betreffende Verfahren übergeben wird Signature
void Update(object entity, DbPropertyValues currentValues, DbPropertyValues originalValues);
wie diese aussieht, wenn es in voller EF Aufruf funktioniert es schön
public override int SaveChanges()
{
var added = ChangeTracker.Entries().Where(p => p.State == EntityState.Added).Select(p => p.Entity);
var updated = ChangeTracker.Entries().Where(p => p.State == EntityState.Modified).Select(p => p);
var context = new ChangeAndValidationContext();
foreach (var item in added)
{
var strategy = context.SelectStrategy(item);
strategy.Add(item);
}
foreach (var item in updated)
{
var strategy = context.SelectStrategy(item);
strategy.Update(item.Entity, item.CurrentValues, item.OriginalValues);
}
return base.SaveChanges();
}
Wir können einfach nicht herausfinden, wie in der DbPropertyValues Original übergeben oder für unsere Tests aktualisiert. Bitte helfen Sie uns herauszufinden, wie Sie diese Methode testen können.