2011-06-06 82 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。