【发布时间】:2014-11-22 06:32:53
【问题描述】:
我有一个 ASP.NET MVC 5 Web 应用程序并使用 EF 6.1 访问我的数据库。
我有一些相当复杂的 LINQ 查询,编译时间长达 10 秒,然后在几毫秒内执行。 EF 确实很好地缓存了这个查询,并且第二次执行查询时它会在这几毫秒内返回。
但是这个缓存不会持久化,所以每次应用重启时都需要重新编译查询,这又需要 10 秒。
有没有办法持久化这个查询缓存,让它在应用重启后仍然存在?
【问题讨论】:
-
感谢您的链接,但我已经完成了大部分工作,它不处理查询缓存,而只处理模型缓存...
-
查询缓存是QueryCacheManager里面的一个Dictionary
。我尝试使用反射保存它,但由于 QueryCacheKey 和 QueryCacheEntry 不是公共的并且没有标记为可序列化,所以这是不可能的。保存/加载查询计划缓存将是一个非常有用的功能,因此您应该在 entityframework.codeplex.com/workitem/list/advanced 上创建一个问题 -
@bmurmistro:我上个月在 /build/ 与 EF 团队的 Rowan Miller 进行了交谈,使用 EF 7 这将很容易实现或已经“在盒子里”,所以我正在等待 EF 7 ...
-
太棒了!感谢@ChrFin 的更新
标签: c# asp.net-mvc entity-framework caching entity-framework-6.1