【发布时间】:2014-06-19 19:13:20
【问题描述】:
我正在使用 MVC3、.NET4.5、C#、EF5.0、MSSQL2008 R2
我的 Web 应用程序可能需要 30 到 60 秒来预热,即通过第一页加载。以下页面加载速度非常快。
我使用 DotTrace 进行了更多分析。
我发现我的一些 LINQ 查询,尤其是 .COUNT 和 .ANY() 查询第一次执行需要很长时间,即:
if (!Queryable.Any<RPRC_Product>((IQueryable<RPRC_Product>) this.db.Class.OfType<RPRC_Product>(), (Expression<Func<RPRC_Product, bool>>) (c => c.ReportId == (int?) myReportId)))
第一次使用大约需要 12 秒。
您能否提供一些指导我如何才能减少这些时间。我听说过用于 EF 查询的预编译器。
我觉得答案在于使用预编译而不是更改这个特定的查询。
在此先感谢
编辑
刚刚阅读了 EF5 的自动编译功能,因此第二轮编译的查询在缓存中。所以第一次,仍然需要编译到中间 EF 语言。还阅读了视图的预生成,这通常也会有所帮助?
【问题讨论】:
标签: linq entity-framework linq-to-entities entity-framework-5