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

发布于 2024-10-20 15:50:15 字数 78 浏览 2 评论 0原文

它会帮助我更好地理解 LINQ,仅此而已。

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

It would help me understand LINQ a little bit better that's all.

I tried using the SQL Profiler but I'm not sure how I can get it to show the actual SQL commands.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

番薯 2024-10-27 15:50:15

ScottGu 的博客上有一篇关于该主题的精彩文章:http://weblogs.asp.net/scottgu/archive/2006/09/01/Understanding-LINQ-to-SQL-Query-Translations.aspx

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

ScottGu's blog has a great post on the subject here: http://weblogs.asp.net/scottgu/archive/2006/09/01/Understanding-LINQ-to-SQL-Query-Translations.aspx

There is a query visualizer you can use by hovering over the object in the debugger.

尽揽少女心 2024-10-27 15:50:15

使用 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);
}

Use the Log property of the DataContext object:

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);
}
讽刺将军 2024-10-27 15:50:15

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

如果您使用 LINQ-Entities,那么有一个名为 .ToTraceString()ObjectQuery 扩展方法,它将为您提供 SQL在服务器上执行。

If your using LINQ-SQL then the best way is to use SQL Profiler. Your probably missing something in your trace profiler. Turn everything on, see the trace, then modify the trace profile accordingly.

If your using LINQ-Entities then there is an ObjectQuery<T> extension method called .ToTraceString() which will give you the SQL that is to be executed on the server.

假情假意假温柔 2024-10-27 15:50:15

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

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

必须对此表示赞同 ScottGu 的博客文章以及他的一般博客。

In the Profiler's Trace Properties window, Events Selection tab: select "Show all events", then under the TSQL section, ensure SQL:StmtStarting or SQL:BatchStarting is checked, then make sure the TextData column is checked.

When you run your trace, the TextData column will contain the SQL.

Have to second ScottGu's blog post for this, and his blog in general.

水溶 2024-10-27 15:50:15

您还可以查看 LinqPad ...您可以创建一个标准的 Linq 查询,它会向您显示它会做什么看起来像是利用表达式和标准 Transact-Sql。

You can also check out LinqPad ... you can create a standard Linq query and it will show you what it would look like leveraging expressions and standard Transact-Sql.

白日梦 2024-10-27 15:50:15

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

If you add a watch to your variable in debug mode and the value of your object will be the SQL query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文