Próba zrobienia logiki biznesowej w języku C# przez przesłonięcie metody EF SaveChanges.
Chodzi o to, aby mieć pewne zaawansowane obliczenia na temat takich rzeczy, jak gdyby pole to zmieniło aktualizować to pole. To pole jest sumą podklasy minus kilka innych pól, znasz zaawansowane śmieci biznesowe.Testowanie EF Zapisz zmiany w modyfikatorach. Przekazywanie w DbPropertyValues
Ponieważ jest to bardzo skomplikowane, chcemy przetestować to wypychanie. Dodawanie testy działają świetnie ale te aktualizujące nie możemy wydawać przetestować jak pisaliśmy interfejs gdzie omawiana metoda jest przekazywana Podpis wygląda następująco
void Update(object entity, DbPropertyValues currentValues, DbPropertyValues originalValues);
Kiedy nazywając ją w pełnej EF to działa pięknie
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();
}
Po prostu nie możemy wymyślić, jak przekazać oryginał lub zaktualizować DbPropertyValues dla naszych testów. Pomóż nam dowiedzieć się, jak przetestować tę metodę.