这将有助于我更好地理解LINQ。
我尝试使用SQL Profiler,但我不确定如何让它显示实际的SQL命令。
答案 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查询。