是否可以查看 LINQ 命令的 SQL 查询?
它会帮助我更好地理解 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
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.
使用 DataContext 对象的 Log 属性:
Use the Log property of the DataContext object:
如果您使用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.在 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.
您还可以查看 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.
如果在调试模式下向变量添加监视,则对象的值将是 SQL 查询。
If you add a watch to your variable in debug mode and the value of your object will be the SQL query.