c# - 持久 Entity Framework 查询缓存

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

我有一个 ASP.NET MVC 5 网络应用程序并使用 EF 6.1 访问我的数据库。
我有一些相当复杂的 LINQ 查询,这些查询最多需要 10 秒才能编译,但随后会在几毫秒内执行。 EF 确实可以很好地缓存此查询,并且第二次执行查询时它会在这几毫秒内返回。
但是此缓存不会保留,因此在每次应用程序重新启动时都需要重新编译查询,这又需要 10 秒。

有没有办法保留此查询缓存,使其在应用重启后仍然存在?

最佳答案

您可以使用编译查询:see herehere

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查询对象不得超出范围。您可以通过将其缓存在 session 中或作为应用程序变量来处理此问题。

关于c# - 持久 Entity Framework 查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073248/

相关文章:

c# - WPF ComboBox 数据绑定(bind) xaml 与代码

entity-framework - 为什么 ASP.NET SPA 模板为所有请求实例化 UserManager 一次?

entity-framework - EF6 Code First 延迟加载导致空集合

entity-framework - Entity Framework -使用toTraceString查看Sql

C#:控件的 TextChanged 事件未在 "assign"上触发

c# - 在基础设施的 ultragridview 中自动滚动

C# 对象大小开销

javascript - 取消按钮返回上一页

c# - MVC 外部登录 - 使用 Google People API

c# - 在 delegatinghandler 中更改 webapi Controller 操作参数