【问题标题】:How can I measure how long Entity Framework takes to compile a query?如何测量 Entity Framework 编译查询所需的时间?
【发布时间】:2014-09-19 18:22:44
【问题描述】:

我正在使用实体框架对我的数据库执行一些相当复杂的查询。我知道 EF 第一次运行查询时,它需要在执行之前编译查询。我想测量这需要多长时间。我在其他地方使用 MiniProfiler,我希望在某个地方只有一种方法可以覆盖并用计时器包装。最好的情况,某种 EF 类有一个我可以覆盖的 CompileQuery 方法。

是否存在这样的事情,或者我是否有其他方法可以衡量 Entity Framework 编译查询所需的时间?

【问题讨论】:

    标签: c# sql asp.net entity-framework


    【解决方案1】:

    你可以尝试使用ToString(),它会将IQueryable转换成SQL语句。

    var watch = new Stopwatch();
    watch.Start();
    query.ToString();
    watch.Stop();
    

    【讨论】:

    • 谢谢。我想在生产应用程序中监视几十个这样的语句,所以这样做意味着一些额外的处理(例如,将其转换为查询一次,然后再次执行)。有没有什么办法可以,比如说,把它变成一个 SQL 查询,然后将结果传递给另一个方法来执行?
    • @user2719100,你试过用compiled query吗?
    • 这就是我要做出决定的原因。将我的所有查询都转换为编译查询是否值得,如果是,哪些是我的优先事项。但是,根据我从您链接的文章中了解到的情况,由于我使用的是 .NET 4.5,因此我已经从缓存查询中受益,因此我不确定编译查询的速度会有多快。此外,编译的查询似乎对应用程序预热时间没有帮助,这是我看到最慢的地方(例如,第一次执行查询)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多