LINQ to SQL在更新后返回旧数据

时间:2012-01-24 21:24:50

标签: c# .net linq linq-to-sql linq-to-entities

我有一个使用LINQ to SQL连接数据库的应用程序。我在使用LINQ to SQL返回正确的新更新数据时遇到问题。

发生的事情是,我更改了UI上的字段,LINQ to SQL生成的更新语句,并将新数据存储在数据库中。但是,LINQ to SQL在此之后不断返回旧数据,我必须停止并重新启动IIS以获取新的更新数据。

更新

请注意,旧数据从LINQ返回到SQL。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

由于Linq to SQL处理缓存的方式,有两种情况可能导致奇怪的行为:

  1. 重复使用DataContextDataContext旨在用于一个“工作单元”,其中“工作单元”基本上是让DataContext生活的最短时间。请参阅MSDN page
  2. 上的备注部分
  3. 多个DataContext s。它们将维护单独的缓存,因此使用一个DataContext进行的更改可能不会反映在从其他人检索的数据中。您可以通过设置ObjectTrackingEnabled关闭缓存,这将强制解决问题。否则,此处描述了一些管理并发DataContexts的技术:How to: Manage Change Conflicts

答案 1 :(得分:0)

这听起来像是在使用某种缓存,也许是页面缓存?如果您可以通过重新启动应用程序来检索更新数据的唯一方法,那么您的数据必须依赖于应用程序生命周期。