持久化entity framework查询缓存

我有一个ASP.NET MVC 5 Web应用程序,并使用EF 6.1访问我的数据库。
我有一些相当复杂的LINQ查询,最多需要10秒才能编译,但之后会在几毫秒内执行。 EF确实缓存了这些查询,第二次执行查询时,它会在几毫秒内返回。
但是这个缓存不会持久存在,所以在每个应用程序重新启动时,需要重新编译查询,再次需要10秒。

有没有办法保持这个查询缓存,以便它能够在应用程序重启后幸存下来?

您可以使用已编译的查询: 请参阅此处或此处

static readonly Func> s_compiledQuery2 = CompiledQuery.Compile>( (ctx, total) => from order in ctx.SalesOrderHeaders where order.TotalDue >= total select order); 

但如此处所述,查询对象不得超出范围。 您可以通过将其缓存在会话中或作为应用程序变量来处理此问题。