我有什么选项可以使用Entity Framework 6在我的对象中进行缓存搜索

时间:2013-09-19 21:15:24

标签: c# asp.net-mvc entity-framework caching

我有一个运行EntityFramework 6的MVC 5应用程序。

页面上的将是基于用户查询返回的搜索结果。数据不会更新,如果缓存搜索结果则不会出现问题。

我使用unity来实现实体框架上下文的依赖注入。它在默认情况下在每个控制器上给出一个新实例(因此在每个请求上)。

如何缓存搜索结果?

我应该改变这种情况吗?在每个控制器上都没有返回新的上下文,让实体框架缓存对象?

我可以在MVC中启用一些缓存并保留它吗?

1 个答案:

答案 0 :(得分:1)

看看E ntity Framework extended nuget package。我们使用它来缓存EF查询。虽然我们使用EF5。如果它不起作用,可能只是获取其来源并调整一些名称空间

或者只是手动缓存您的EF结果(确保通过枚举列表完全加载它)。无需过滤即可对其进行缓存(如果您具有巨大的可变性)或缓存过滤的版本,只需将其缓存在HTTP缓存中即可。还可以创建一个查询服务,为您获取数据。可以在查询服务中缓存数据,或者如果您想要更清晰的代码,您可以使用装饰器来包装查询服务以为您提供缓存版本

每个请求的上下文是正确的设置。 Every request should have a new context。不要试图拥有一个长期存在的环境,这将导致你没有麻烦。

还可以启用MVC的页面级输出缓存(并确保你cache based on parameters passed)但是你的里程可能会因参数的数量和范围而有所不同