2011-02-14 107 views
1

我的代码片段,我不能完全得到工作:更新记录

StoreDataHandler dataHandler = new StoreDataHandler(HttpContext.Request["data"]); 
ChangeRecords<ChequeDiary> data = dataHandler.ObjectData<ChequeDiary>(); 

foreach (ChequeDiary item in data.Updated) { 
    db.ChequeDiaries.Attach(item); 
    db.Refresh(System.Data.Objects.RefreshMode.ClientWins, item); 
} 

这是为了什么变化和更新底层对象,但当我打电话

db.SaveChanges(); 

..没有更新。如果我使用:

foreach (ChequeDiary item in data.Updated) { 
    ChequeDiary obj = db.ChequeDiaries.FirstOrDefault(o => o.Id == item.Id); 
    obj.BankedAmount = item.BankedAmount; 
} 

和显式设置每个属性,它的工作原理。为什么?!

回答

1

您的第一个示例可能不会将任何属性标记为已修改。检查ObjectStateManager以确认这一点。一般来说,您必须在附加对象后修改属性

+0

谢谢,我想我只是希望它知道它通过的数据。欢呼清理它。 – pierre 2011-02-14 14:29:15