为啥 EF 在第一次调用的方法中需要很长时间

Posted

技术标签:

【中文标题】为啥 EF 在第一次调用的方法中需要很长时间【英文标题】:why EF takes a long time in first called method为什么 EF 在第一次调用的方法中需要很长时间 【发布时间】:2011-07-21 04:37:37 【问题描述】:

我正在使用 web 上的应用程序,我正在使用 ef 创建模型并访问数据库。

    创建用于会话级别的会话变量:

    private Model.WebsiteModelContainer s_defaultModel;
    public Model.WebsiteModelContainer DefaultModel
    
        get
        
            s_defaultModel = HttpContext.Current.Session["DefaultModel"] as WebsiteModelContainer;
    
            if (s_defaultModel == null)
            
                s_defaultModel = new Model.WebsiteModelContainer();
                HttpContext.Current.Session["DefaultModel"] = s_defaultModel;
            
    
    
            return s_defaultModel;
        
    
    

    在代码中使用 DefaultModel:

    return DefaultModel.Ages.OrderBy(c => c.AgeName).ToList();

【问题讨论】:

【参考方案1】:

在新建项目后,执行的第一个数据库查询会导致 EF 构建用于数据访问的视图。这可能会导致显着延迟。您可以通过让 EF 预编译视图来解决此问题。请参阅来自 MSDN 的 How to: Pre-Generate Views to Improve Query Performance。

【讨论】:

以上是关于为啥 EF 在第一次调用的方法中需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章