当我生成这样的查询时:
var query = from x in Entities.SomeTable
select x;
我可以设置断点,将光标悬停在查询上后,我可以看到发送到数据库的SQL命令是什么。不幸的是,当我使用Count
时,我无法做到这一点var query = (from x in Entities.SomeTable
select x).Count();
当然我可以看到使用探查器来到SqlServer的是什么,但也许有人知道如何在VS中做到这一点(如果可能的话)。
答案 0 :(得分:0)
您可以使用ToTraceString()
:
ObjectQuery<SomeTable> query = (from x in Entities.SomeTable select x).Count();
Console.WriteLine(query.ToTraceString());
答案 1 :(得分:0)
您可以使用Database.Log
记录如下所示的任何查询:
using (var context = new MyContext())
{
context.Database.Log = Console.Write;
// Your code here...
}
通常,在我的上下文构造函数中,我将其设置为我的记录器(无论是NLog,Log4Net还是股票.net记录器)而不是控制台,但实际的记录工具是无关紧要的。
答案 2 :(得分:0)
在EF6及更高版本中,您可以在查询之前使用以下内容:
context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
我发现这比拉起SQL Profiler和运行跟踪更快。 另外,本文还讨论了有关该主题的更多信息: How do I view the SQL generated by the Entity Framework?