DataContext.Refresh()的正确用法是什么?

9

我有一个内存中的LinqToSql对象,期望在对象的生命周期内数据库中的字段值会发生变化。因此,我需要定期检查是否仍然同步。我原本期望可以这样做:

myDataContext.Refresh(RefreshMode.KeepCurrentValues, myObj);

但不幸的是,这似乎没有任何效果;即使DB的值已更改,myObj上的值仍保持不变。 该方法的MSDN文档相当简略。 有人能告诉我这里缺少了什么吗?

2个回答

13
如果你希望刷新的对象当前值与数据库中的值相匹配,你需要使用 RefreshMode.OverwriteCurrentValues 模式。

2
啊啊啊啊!我简直不敢相信我错过了那个![脸红得深深的] - Shaul Behr
2
看起来它没有更新与另一个表相映射的关联集合属性。它只更新与当前实体指向的表的列相映射的属性。 - RBT

4
如果您想使用最新的值来“刷新”实体,则适当的模式RefreshMode.KeepChangesRefreshMode.OverwriteCurrentValuesKeepChanges将保留任何本地更改的值。 OverwriteCurrentValues将从数据库中获取所有值。
请注意ChangeConflictException

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接