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 处理缓存的方式,有两种情况可能会导致奇怪的行为:
DataContext
的重用。DataContext
旨在用于一个"工作单元",其中"工作单元"本质上是您可以逃脱的最短时间,让DataContext
生存。 请参阅 MSDN 页面上的"备注"部分。- 多个
DataContext
秒。它们将维护单独的缓存,因此使用一个DataContext
所做的更改可能不会反映在从其他检索的数据中。 您可以通过设置ObjectTrackingEnabled
来关闭缓存,这将暴力解决问题。 否则,下面介绍了一些管理并发DataContexts
的技术:如何:管理更改冲突
这
听起来像您在使用某种缓存,也许是页面缓存?如果检索更新数据的唯一方法是重新启动应用程序,则数据必须依赖于应用程序生存期。