給定以下函式,變數currentModel已經是我要更新的修改模型,它可能具有與資料庫中的屬性不同的一些屬性,并且此函式正確更新修改后的值。
現在我想跟蹤更新之前所做的更改,問題是ChangeTracker即使只有一個與原始模型完全不同,它也會檢測到所有屬性都已修改。
有沒有辦法在使用
相關鏈接:
DbEntityEntry.GetDatabaseValues 方法
DbPropertyValues.SetValues 方法
ChangeTracker.Clear 方法
uj5u.com熱心網友回復:
可以從其他類實體復制物體的值,如下所示:
public void SaveCustomer(Client currentModel)
{
var objFromDbAct = _db.Clients.Local.FirstOrDefault(c => c.Recid == currentModel.Recid);
if (objFromDbAct == null)
{
_db.Update(currentModel);
}
else
{
var preEntity = _db.Entry(objFromDbAct);
preEntity.CurrentValues.SetValues(currentModel);
}
_db.ChangeTracker.DetectChanges();
string trackChanges = _db.ChangeTracker.DebugView.LongView;
_db.SaveChanges();
}
trackChanges 值:
Client {Recid: 1} Modified
Recid: 1 PK
Addr1: 'Address 1'
Addr2: 'Address 2'
Zip: 'Modified' Modified Originally 'Zip'
和執行的SQL SaveChanges:
UPDATE [Clients] SET [Zip] = @p0
WHERE [Recid] = @p1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519419.html
標籤:实体框架实体框架核心
