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

本文关键字:返回 数据 更新 to SQL LINQ | 更新日期: 2023-09-27 18:21:23

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

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

更新

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

知道吗?

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

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

  1. DataContext的重用。 DataContext旨在用于一个"工作单元",其中"工作单元"本质上是您可以逃脱的最短时间,让DataContext生存。 请参阅 MSDN 页面上的"备注"部分。
  2. 多个DataContext秒。它们将维护单独的缓存,因此使用一个DataContext所做的更改可能不会反映在从其他检索的数据中。 您可以通过设置 ObjectTrackingEnabled 来关闭缓存,这将暴力解决问题。 否则,下面介绍了一些管理并发DataContexts的技术:如何:管理更改冲突

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