每个请求由EF4执行的查询数

时间:2011-05-03 05:25:14

标签: performance entity-framework entity-framework-4

是否有办法捕获(并最终记录)每个请求(或工作单元)由EF4执行的查询总数?

我发现编写一些效率低下的EF4代码很容易,因为它可以通过延迟加载轻松访问,并且由于结构不合理的LINQ查询。

我能够发现这一点的一个简单方法是捕获正在执行的查询总数,并将其与我的请求数据一起记录下来,以便我可以看到哪些页面(控制器/操作)是由此产生的在过多的查询中。

有没有办法用EF4代码执行此操作?我知道我可以用Profiler做到这一点,而且我现在已经在使用它了,但是如果我能自动化它会更容易 - 也更可靠。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您必须从EF Tracing provider wrapper开始并使用一些日志记录基础结构,这将允许您按请求显示不同的日志记录。您可以使用线程ID,会话ID或其他标识符来区分日志记录例如,使用TraceSource的.NET日志记录支持CorrelationManager及其StartLogicalOperationStopLogicalOperation方法。我认为您应该能够在完成请求处理时启动逻辑操作,并在完成请求处理时结束逻辑操作。

答案 1 :(得分:0)

您可能需要考虑一下这个:EF Profiler。 [注意:我与这家公司没有任何关系,只是觉得它是一个很棒的工具]