查询数据库时如何避免数据缓存?

时间:2013-08-06 08:17:22

标签: sql-server-2008 entity-framework caching asp.net-mvc-4

我对ASP.NET MVC4和Entity Framework 5有一个奇怪的问题:我正在构建的Web应用程序从数据库中检索数据并将其作为Json发送到页面上的viewmodel中,然后从中呈现在页面上的表格中。数据表示一些数据点不时变化的状态。

现在我发现了以下行为:

  • 当我从开发服务器运行Web应用程序时,一切正常,显示的数据是最新的。
  • 当我将Web应用程序部署到生产服务器(与同一个数据库进行通信)时,该页面不代表数据的当前状态

我无法断开检索数据的控制器方法,因为它只发生在生产服务器上,但是当我查看Json数据时,我可以看到它实际上是旧数据。所以似乎EF正在缓存检索到的数据。这是一个严重的问题,因为我们将此Web应用程序用于工业监控目的,因此需要依赖于最新数据。

有没有人遇到同样的问题?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我不太了解实体框架,但我认为这与变更跟踪有关。我试着禁用它来强制EF重新查询数据库,我想(如果我错了,其他人可以纠正我)但除非你在ObjectContext上调用了SaveChanges,否则重新查询相同的数据数据库不会再被查询了。

我已经使用MergeOption = MergeOption.NoTracking(在ObjectSet上)在我的项目中将其关闭。