試圖通過覆蓋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原始文件或更新測試。請幫助我們弄清楚如何測試該方法。