我正在尝试了解有关尝试使用ADO.Net / EF管道的更多信息,以及如何不直观地挂钩管道(将查询,结果等转储到我的日志中)。
我所看到的一切都说没有办法不引人注目或没有使用SQL事件探查器...但我知道它可能是最好的EF Profiler设法做到的。
答案 0 :(得分:2)
我不知道EfProf在内部是如何工作的,但EF可以以自定义提供程序的形式扩展 - 使用自定义提供程序可以包装现有提供程序(即SQL Server)并检查所有流量 - 这允许分析。本文重点讨论这个主题:Tracing and Caching Provider Wrappers for Entity Framework - 提供了示例代码。
每当您发布LINQ或实体时 通过ObjectContext进行SQL查询 例如,查询通过 系列图层(见图 下面)。在高层次我们可以这么说 来自的所有查询和更新 ObjectContext被翻译和 通过EntityConnection执行, 它反过来谈论 特定于服务器的数据提供者,例如 SqlClient或Sql Server CE客户端。
实体使用的提供程序接口 框架是可堆叠的,这意味着 可以写一个提供者 这将包装另一个提供商和 拦截实体之间的通信 框架和原始提供者。
包装提供商有机会做到 有趣的事情,例如:
在执行查询树和命令之前检查它们
控制连接,命令, 交易,数据读者