【问题标题】:Cache Entity Framework query results for next postback为下一次回发缓存实体框架查询结果
【发布时间】:2015-08-21 12:58:42
【问题描述】:

我有一个常见的场景,我在数据库中查询不同的值集以填充给定表单中的一些下拉列表。

我有很多,检索每个下拉列表的值列表需要 4-5 秒。

有什么办法可以在服务器上缓存这些信息,因为这种信息不会经常变化..

这是我要求值的代码的一部分...

AvailablePaperSizes = i_Context.PaperSizes.ToList();
AvailablePaperTypes = i_Context.PaperTypes.ToList();
AvailablePaperColors = i_Context.PaperColors.ToList();

【问题讨论】:

    标签: asp.net-mvc entity-framework caching


    【解决方案1】:

    每个列表 4-5 秒?如果每个列表都可以放入下拉控件中,我会首先尝试找出为什么需要这么长时间。

    在任何情况下,您都可以创建已编译的查询并将其存储在上下文类的静态实例中。查询将在第一次访问时运行(您可以将其放入 Application_Start 或类似名称)并将结果集存储在内存中。以后每次调用该方法时,都会在内存中查找结果集,而不是查询数据库。

    一个有用的辅助方法如下:

    public partial class AppContext: ObjectContext
    {
        private static readonly Func<AppContext, IEnumerable<PaperSizes>> pSizes = CompiledQuery.Compile(
            (AppContext context) => context.PaperSizes.ToList()
            );
    
        public IEnumerable<PaperSizes> GetAllPaperSizes() 
        {
            return pSizes.Invoke(this).ToList();
        }
     }
    

    您可以使用它来填写您的下拉列表:

    AvailablePaperSizes = i_Context.GetAllPaperSizes();
    

    所有其他系列同上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多