2013-08-06 60 views
0

我遇到了ASP.NET MVC4和实体框架5的一个奇怪问题:我正在构建的Web应用程序从数据库中检索数据,并将其作为Json发送到页面上的viewmodel中,然后从中获取在页面上的一张桌子。数据表示一些数据点的状态,这些数据点会不时变化。查询数据库时如何避免数据缓存?

现在我观察到以下行为:

  • ,当我从我的开发服务器上运行的Web应用程序,一切工作正常和显示的数据是最新的。
  • 当我部署web应用到生产服务器(会谈非常相同的DB),页面并不代表数据的当前状态

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

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

+2

如果你使用jquery通过get ajax来调用它,那么一定要添加$ .ajaxSetup({cache:false}});到您的页面 – Slicksim

+0

感谢您的提示,我会更好地包括这一点! – Robert

回答

1

我不知道实体框架,但我认为这跟变化跟踪有关。我试图禁用它来强制EF重新查询数据库,我认为(和其他人请纠正我,如果我错了),但除非SaveChanges已被调用ObjectContext如果你重新查询相同的数据数据库将不会再被查询。

我用MergeOption = MergeOption.NoTracking(在ObjectSet上)在我的项目中关闭它。

+0

谢谢,这个工作!缓存/对象跟踪通常是一个好主意,但这里数据库中的数据会从其他应用程序中更改。在我的情况下,数据一致性比性能更重要。 – Robert

相关问题