试图通过覆盖EF SaveChanges方法在C#中执行一些业务逻辑。
这个想法是有一些高级的计算,如果这个领域已经改变了更新这个领域。这个领域是子类减去其他领域的总和,你知道高级商业垃圾。测试EF保存更改修饰符。传入DbPropertyValues
由于它非常复杂,我们想测试它的填充。添加测试工作的伟大,但似乎该更新那些我们无法测试,因为我们已经写在这里讨论的方法传递 签名看起来像这样
void Update(object entity, DbPropertyValues currentValues, DbPropertyValues originalValues);
当全EF调用它,它精美的作品
接口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();
}
我们无法弄清楚如何传递DbPropertyValues原始文件或更新测试。请帮助我们弄清楚如何测试该方法。