Provare a fare qualche logica di business in C# sovrascrivendo il metodo EF SaveChanges.
L'idea è di avere alcuni calcoli avanzati su cose come se questo campo avesse cambiato aggiornare questo campo. E questo campo è la somma della sottoclasse meno alcuni altri campi, sai spazzatura business avanzata.Test EF Modificatori modifiche di salvataggio. Passare in DbPropertyValues
Dal momento che è davvero complicato, vogliamo testare il riempimento. L'aggiunta di prove di grande lavoro ma quelli di aggiornamento non riesco a testare come abbiamo scritto un'interfaccia in cui è passato il metodo in questione Firma assomiglia a questo
void Update(object entity, DbPropertyValues currentValues, DbPropertyValues originalValues);
Quando si chiama per intero EF funziona splendidamente
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();
}
Non siamo in grado di capire come passare in DbPropertyValues originale o aggiornato per i nostri test. Per favore aiutaci a capire come testare quel metodo.