2011-02-14 108 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