2

我正在分析一个 ASP.NET Web 应用程序,我注意到我的 EF4 执行计划没有被缓存。每次加载页面时,都会重新编译所有 Linq 表达式,如下面的屏幕截图所示。

点跟踪

有什么方法可以告诉 EF4 缓存这些执行计划吗?

编辑:

这就是我的查询的样子:

var objs = db.Table
    .Include("OtherTable")
    .Where(g =>
        (someId != null || g.ID == someId) &&
        (g.ObjType == someType) &&
        (/* etc */))
    .ToList();
4

1 回答 1

2

看看查询计划缓存。如果您的查询创建效率低下,它们可能不会被缓存。

此外,每个执行计划都按应用程序域缓存。所以在 ASP.Net 中,这与 AppPool 相同,如果 AppPool 关闭或重新启动,缓存将被清除。

于 2013-01-02T19:57:38.117 回答