1
我正在使用实体框架来对我的数据库执行一些相当复杂的查询。我知道EF首次运行查询,它需要在执行前编译查询。我想衡量这需要多长时间。我在其他地方使用MiniProfiler,我希望只有一个方法可以覆盖并用计时器包装。最好的情况下,某种EF类有一个CompileQuery
我可以覆盖的方法。如何测量实体框架编译查询需要多长时间?
是否存在类似这样的事情,还是有另一种方法来衡量实体框架编译查询需要多长时间?
我正在使用实体框架来对我的数据库执行一些相当复杂的查询。我知道EF首次运行查询,它需要在执行前编译查询。我想衡量这需要多长时间。我在其他地方使用MiniProfiler,我希望只有一个方法可以覆盖并用计时器包装。最好的情况下,某种EF类有一个CompileQuery
我可以覆盖的方法。如何测量实体框架编译查询需要多长时间?
是否存在类似这样的事情,还是有另一种方法来衡量实体框架编译查询需要多长时间?
您可以尝试使用ToString()
,它会将IQueryable
转换为SQL语句。
var watch = new Stopwatch();
watch.Start();
query.ToString();
watch.Stop();
谢谢。我有几十个这样的语句,我想在生产应用程序中进行监控,因此这意味着需要额外的一些处理(例如,将其转换为查询一次以计算时间,然后再执行)。有什么方法可以将它转换为SQL查询,然后将结果传递给另一个要执行的方法? – user2719100 2014-09-22 16:25:34
@ user2719100,您是否尝试过使用[编译查询](http://msdn.microsoft.com/zh-cn/library/bb896297.aspx)? – 2014-09-22 16:57:17
这就是我想要做的决定。将所有查询转化为编译查询是否值得,如果是的话,哪些是我的优先考虑。从我从你链接的文章中了解到,但是,因为我使用.NET 4.5,所以我已经获得了缓存查询的好处,所以我不确定编译后的查询会有多快。另外,编译查询似乎没有帮助应用程序热身时间,这是我看到最慢的地方(例如,第一次执行查询) – user2719100 2014-09-22 19:30:32