当数据库中的数据发生更改时,LINQ to SQL不会更新

问题描述:

我遇到此问题,在数据库上更新字段(比如表MyTable中的Field3)后,MyTable.Field3(在C#中)仍然返回旧值。当数据库中的数据发生更改时,LINQ to SQL不会更新

我怀疑有一些缓存......?

我该如何强制:
从数据库中读取数值?

更新MyTable类中的值?

或者有什么我想念的?我是新来的LINQ

谢谢你提前。

DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, entity); 

如果你想刷新你的整个实体集,最简单的方法可能是创建一个新的DataContext并重新查询一切。

+2

它引发此异常: 无法识别指定用于刷新的对象。 显然记录被改变使用 Context.SubmitChanges(); 我可以告诉记录是否正在更新,如何在更新后立即刷新该记录的值? – Aximili 2010-04-19 07:13:27

+0

任何地方有任何示例代码?我甚至不知道我需要谷歌的条款,我应该搜索什么?谢谢 – Aximili 2010-04-19 07:16:10

+3

当你调用SubmitChanges()时,你的对象应该会自己刷新。如果没有,请检查Linq to SQL数据模型中字段上的UpdateMode属性,确保它设置为“自动更新”。 – 2010-04-20 00:14:59

您误解了模型。每次请求成员时,Linq to SQL都不会传递到数据库。当您从数据库中获取对象时,它将作为Linq to SQL对象存储在内存中,并在此存在。在再次查询数据库之前,您不会获得该对象的最新版本。

+0

我明白了,这就是我的想法,谢谢戴夫。那么如何让它同步内存中的值以匹配数据库中的值呢? – Aximili 2010-04-19 02:50:58

+1

您可以从DataContext再次请求该对象。 – 2010-04-19 04:35:44

+0

你怎么做那个罗伯特? – Aximili 2010-04-19 23:38:06