Entity Framework是否有某种上下文缓存?

时间:2011-04-14 21:07:22

标签: c# entity-framework caching entity-framework-4 webforms

我们有两个Web应用程序,每个都在为EF创建自己的数据上下文。当我在一个应用程序中对实体进行更改时,当我在SQL Server Mangement Studio中查看数据时,我会看到页面和数据库中的更改。但是,我没有立即看到其他应用程序中的更改。

两个应用程序都使用依赖注入,两个应用程序都使用相同的业务层和数据层。因此,两个应用程序中的UI都要通过一个公共控制器类(不要与MVC控制器混淆),并且控制器会通过它正在检索的实体的存储库。因为它们是不同的应用程序,所以每个应用程序都有自己的实体框架数据上下文实例。

如果有某种缓存,我该如何关闭它?

提前致谢。

编辑 - 也许缓存是在EF之上的某个地方发生的?清除浏览器缓存似乎无法解决问题。经过一段时间后,我会突然看到其他应用程序中记录的更新,但有一段时间没有多少提示会显示更新。

2 个答案:

答案 0 :(得分:7)

如果在上下文中发生缓存,则在当前HTTP请求结束时处理上下文时,缓存的值应该消失。你确实有每个请求的上下文,对吗?

这里有一些context lifetime best practices

答案 1 :(得分:2)

是的,上下文会缓存他们的结果。

你应该为每个查询创建一个新的上下文(或实现类似NHibernate的Session-per-request