是否可以查看LINQ命令的SQL查询?

时间:2011-03-08 00:17:32

标签: .net sql linq

这将有助于我更好地理解LINQ。

我尝试使用SQL Profiler,但我不确定如何让它显示实际的SQL命令。

6 个答案:

答案 0 :(得分:6)

ScottGu的博客在这里有一篇很棒的帖子:http://weblogs.asp.net/scottgu/archive/2006/09/01/Understanding-LINQ-to-SQL-Query-Translations.aspx

您可以通过将鼠标悬停在调试器中的对象上来使用查询可视化工具。

答案 1 :(得分:1)

使用DataContext对象的Log属性:

using (var dc = new DataContext())
{
    dc.Log = Console.Out;  // Outputs the SQL statement to a System.IO.TextWriter object

    var customers = dc.Customers.Single(c => c.Customer_ID == 7);
}

答案 2 :(得分:0)

如果您使用 LINQ-SQL ,那么最好的方法是使用 SQL Profiler 。您可能在跟踪分析器中遗漏了某些内容。打开所有内容,查看跟踪,然后相应地修改跟踪配置文件。

如果您使用 LINQ-Entities ,则会有一个名为ObjectQuery<T>的{​​{1}}扩展方法,该方法将为您提供要在服务器上执行的SQL。

答案 3 :(得分:0)

在Profiler的“跟踪属性”窗口中,“事件选择”选项卡:选择“显示所有事件”,然后在“TSQL”部分下,确保选中SQL:StmtStarting或SQL:BatchStarting,然后确保选中TextData列。

运行跟踪时,TextData列将包含SQL。

为了这个以及他的博客,不得不第二次参加ScottGu的博客文章。

答案 4 :(得分:0)

您还可以查看LinqPad ...您可以创建一个标准的Linq查询,它将显示利用表达式和标准Transact-Sql的情况。

答案 5 :(得分:0)

如果在调试模式下向变量添加监视,则对象的值将是SQL查询。