我有一个 ASP.NET MVC 5 Web 应用程序并使用 EF 6.1 访问我的数据库。
我有一些相当复杂的 LINQ 查询,编译需要长达 10 秒的时间,但执行后只需几毫秒。 EF 确实会很好地缓存此查询,并且第二次执行查询时,它会在这几毫秒内返回。
但此缓存并未持久保存,因此每次应用程序重新启动时都需要重新编译查询,这又需要 10 秒。
有没有办法保留此查询缓存,使其在应用程序重新启动后仍然存在?
您可以使用编译查询:see here or here
static readonly Func<AdventureWorksEntities, Decimal, IQueryable<SalesOrderHeader>> s_compiledQuery2 =
CompiledQuery.Compile<AdventureWorksEntities, Decimal, IQueryable<SalesOrderHeader>>(
(ctx, total) => from order in ctx.SalesOrderHeaders
where order.TotalDue >= total
select order);
但正如提到的here查询对象不得超出范围。您可以通过将其缓存在会话中或作为应用程序变量来处理此问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)