使用IDbCommandInterceptor _AND_附加调试器记录EF查询

时间:2015-09-15 16:18:21

标签: c# entity-framework debugging

我正在使用IDbCommandInterceptor实现来跟踪EF执行的所有SQL查询到文件中。基本上它工作正常,除了一件困扰我的事情。当我调试我的代码并在其中一个调试器窗口中查看某个实体时,EF可能需要从db获取其他数据 - 这导致执行sql命令,该命令也被IDbCommandInterceptor拦截并且也由logger处理发动机。事实上,它导致文件中的大量日志记录在我的代码中不是由逻辑自然产生的,而是由我在调试器模式下与visual studio IDE的交互。所以我想弄清楚如何防止这种情况发生。

我知道System.Diagnostics.Debugger.IsAttached,但它对我的情况没有帮助,因为我需要检测实际的调试模式。我的意思是代码执行实际由调试器使用某种断点机制停止。

有没有办法检查这个?

1 个答案:

答案 0 :(得分:0)

简而言之,你不能这样做,也不应该这样做。您可能想尝试Debugger.CurrentMode(注意,它不是System.Diagnostics.Debugger,而是来自EnvDte.dll的另一个用于Visual Studio自动化任务),但在您的情况下,即使这样也无济于事(并且是难看的解决方案)无论如何)。

但是如果你附加了调试器,为什么要记录任何文件呢?如果您需要该文件进行调试,但您不希望膨胀正常的查询日志,只需登录特殊的“调试”日志文件,如果附加了调试器。总而言之,你必须找到另一种方法来处理你的问题,或者只是忍受它:)