2011-06-06 87 views
7

我在內存中有一個LinqToSql對象,其數據庫的字段值預計會在對象的生命週期中更改。所以我需要定期檢查一切是否仍然同步。我期待能夠這樣做:DataContext.Refresh()的正確用法是什麼?

myDataContext.Refresh(RefreshMode.KeepCurrentValues, myObj); 

但不幸的是,這似乎沒有影響;即使DB值發生變化,myObj上的值也保持不變。 MSDN documentation on this method是相當稀缺。誰能告訴我我在這裏失蹤了什麼?

回答

12

如果您希望刷新的對象的當前值與數據庫中當前的值匹配,您需要使用RefreshMode.OverwriteCurrentValues模式。

+1

Aaaaagggggghhhhh!我不敢相信我錯過了! [臉紅深紅] – 2011-06-06 15:31:24

+1

它似乎不會更新映射到另一個表的關聯集合屬性。它只更新映射到當前實體指向的表的列的屬性。 – RBT 2016-06-18 07:48:12

3

如果您想用最新的值「刷新」您的實體,那麼適當的mode將是RefreshMode.KeepChangesRefreshMode.OverwriteCurrentValues

KeepChanges將原樣保留任何本地更改的值。 OverwriteCurrentValues將從數據庫中提取所有值。請注意0​​s。