Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 缓存下一次回发的实体框架查询结果_Asp.net Mvc_Entity Framework_Caching - Fatal编程技术网

Asp.net mvc 缓存下一次回发的实体框架查询结果

Asp.net mvc 缓存下一次回发的实体框架查询结果,asp.net-mvc,entity-framework,caching,Asp.net Mvc,Entity Framework,Caching,我有一个常见的场景,我在DB中查询不同的值集,以填充给定表单中的一些下拉列表 我有很多,需要4-5秒来检索每个下拉列表的值列表 有什么方法可以在服务器上缓存此信息,因为此类信息不会经常更改 这里是我的代码的一部分,要求值 AvailablePaperSizes = i_Context.PaperSizes.ToList(); AvailablePaperTypes = i_Context.PaperTypes.ToList(); AvailablePaperColors = i_Context.

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

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

有什么方法可以在服务器上缓存此信息,因为此类信息不会经常更改

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

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

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

在任何情况下,都可以创建一个已编译的查询,并将其存储在上下文类的静态实例中。查询将在第一次访问时运行(您可以将其放入
Application\u 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();