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

Performance 每个请求由EF4执行的查询数,performance,entity-framework,entity-framework-4,Performance,Entity Framework,Entity Framework 4,是否有方法捕获(并最终记录)每个请求(或工作单元)EF4执行的查询总数 我发现编写一些低效的EF4代码对我来说很容易,这是因为它可以通过延迟加载轻松访问,也因为LINQ查询的结构很差 对于我来说,一个简单的方法是捕获正在执行的查询总数,并将其与请求数据一起记录,这样我就可以看到哪些页面(控制器/操作)导致了过多的查询 有没有一种方法可以用EF4代码实现这一点?我知道我可以用Profiler来实现这一点,现在我已经在使用它了,但是如果我可以自动化的话,它会更容易,也更可靠 提前感谢。您必须开始使用

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

我发现编写一些低效的EF4代码对我来说很容易,这是因为它可以通过延迟加载轻松访问,也因为LINQ查询的结构很差

对于我来说,一个简单的方法是捕获正在执行的查询总数,并将其与请求数据一起记录,这样我就可以看到哪些页面(控制器/操作)导致了过多的查询

有没有一种方法可以用EF4代码实现这一点?我知道我可以用Profiler来实现这一点,现在我已经在使用它了,但是如果我可以自动化的话,它会更容易,也更可靠


提前感谢。

您必须开始使用一些日志记录基础设施,这些基础设施允许您根据请求记录不同的日志记录。您可以使用线程Id、会话Id或其他标识符来区分日志记录,例如.NET日志记录与
TraceSource
支持
CorrelationManager
its
StartLogicalOperation
StopLogicalOperation
方法。我认为您应该能够在启动请求处理时启动逻辑操作,在完成请求处理时结束逻辑操作谢谢,你又来了。我已经实现了这一点,并提出了自己的机制来记录执行计数,以及每个请求执行的所有查询的SQL。这将使初始故障排除和性能调整变得更加容易!