我有一个ASP.NET MVC 5网络应用程序,并使用EF 6.1来访问我的数据库。
我有一些相当复杂的LINQ查询需要10s来编译,但随后在几毫秒内执行。 EF会缓存这些查询,并在第二次执行查询时在几毫秒内返回。
但是这个缓存并没有被保存,所以每个应用程序都重新启动,需要重新编译这个查询,这又需要10秒钟。坚持实体框架查询缓存
有没有办法坚持这个查询缓存,以便它在应用程序重新启动?
我有一个ASP.NET MVC 5网络应用程序,并使用EF 6.1来访问我的数据库。
我有一些相当复杂的LINQ查询需要10s来编译,但随后在几毫秒内执行。 EF会缓存这些查询,并在第二次执行查询时在几毫秒内返回。
但是这个缓存并没有被保存,所以每个应用程序都重新启动,需要重新编译这个查询,这又需要10秒钟。坚持实体框架查询缓存
有没有办法坚持这个查询缓存,以便它在应用程序重新启动?
http://www.fusonic.net/zh/blog/2014/07/09/three-steps-for-fast-entityframework-6.1-first-query-performance/ – 2014-09-27 21:36:39
感谢您的链接,但我已经做大部分这一点,它不处理查询缓存,但只处理模型缓存...... – ChrFin 2014-09-28 07:56:13
查询缓存是QueryCacheManager中的一个Dictionary。 我尝试使用反射来保存它,但由于QueryCacheKey和QueryCacheEntry未公开,并且未标记为可序列化,因此这是不可能的。 保存/加载查询计划缓存将是一个非常有用的功能,所以你应该在http://entityframework.codeplex.com/workitem/list/advanced上创建一个问题 –
2014-11-21 12:23:47