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

Axi*_*ili 13 .net c# linq linq-to-sql

我有这个问题,在数据库上更新一个字段(比如表MyTable中的Field3)后,MyTable.Field3(在C#中)仍然返回旧值.

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

如何强制它:
从数据库中读取值?
或者
更新MyTable类中的值?

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

先感谢您.

Jak*_*ake 11

DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, entity);
Run Code Online (Sandbox Code Playgroud)

如果要刷新整个实体集,最简单的方法可能就是创建一个新的DataContext并重新查询所有内容.

  • 当您调用SubmitChanges()时,您的对象应该刷新自己.如果没有,请检查Linq to SQL数据模型中字段的UpdateMode属性,以确保将其设置为"自动更新". (3认同)
  • 它抛出此异常:无法识别为刷新指定的对象.显然,使用Context.SubmitChanges()更改记录; 我可以判断一条记录是否正在更新,如何在更新后立即刷新该记录的值? (2认同)

Dav*_*kle 6

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