EF执行SQL时调试断点

Con*_*ell 3 .net entity-framework visual-studio-2012 entity-framework-6

当使用SQL Server Profiler跟踪实体框架正在执行的SQL查询时,我看到一些不应该执行的查询,我无法确定哪部分代码是原因!

在Visual Studio Professional 2012中,有没有办法在执行任何SQL查询时将调试器设置为中断,所以我可以看到调用堆栈?

Ger*_*old 5

如果你愿意(并允许)改变上下文:是的.你可以把它放在上下文的构造函数中:

#if DEBUG

    this.Database.Log = s =>
        {
            Debug.WriteLine(s);
        };

#endif
Run Code Online (Sandbox Code Playgroud)

现在你可以Debug.WriteLine(s);在它被击中时放置断点并检查堆栈跟踪.

您可以使断点有条件地仅查看查询,例如通过置入s.Contains("[")中断条件.