首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为下一次回发缓存实体框架查询结果

为下一次回发缓存实体框架查询结果
EN

Stack Overflow用户
提问于 2015-06-07 01:41:48
回答 1查看 103关注 0票数 1

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

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

有什么方法可以将这些信息缓存到服务器上,因为这种信息不会经常更改。

这是我的代码的一部分,请求取值...

代码语言:javascript
复制
AvailablePaperSizes = i_Context.PaperSizes.ToList();
AvailablePaperTypes = i_Context.PaperTypes.ToList();
AvailablePaperColors = i_Context.PaperColors.ToList();
EN

回答 1

Stack Overflow用户

发布于 2015-06-07 04:39:48

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

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

下面是一个有用的辅助方法:

代码语言:javascript
复制
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();
    }
 }

您可以使用它填写您的下拉列表,如下所示:

代码语言:javascript
复制
AvailablePaperSizes = i_Context.GetAllPaperSizes();

所有其他集合也是如此。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30685787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档