EF执行时调试断点SQL

Debug breakpoint when EF executes SQL

当使用 SQL Server Profiler 跟踪 Entity Framework 正在执行的 SQL 查询时,我看到一些不应该执行的查询,我不能找出代码的哪一部分是原因!

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

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

#if DEBUG

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

#endif

现在您可以在 Debug.WriteLine(s); 上放置断点并在命中时检查堆栈跟踪。

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