今日免费次数已满, 请开通会员/明日再来

7

是否可以从编译的linq查询中获取生成的SQL语句?

3个回答

9
你可以:
  1. 使用上下文的日志属性将生成的查询重定向到Visual Studio输出窗口。 链接
  2. 或者使用LINQ to SQL Debug Visualizer。 链接

将日志重定向到Visual Studio输出是更简单的方法。点赞 - dcarneiro
1
为了方便未来的搜索者,我在第一个链接中没有找到与问题相关的内容。自此答案发布以来,内容可能已经发生变化。你只需要在数据库上下文对象处添加 db.Log = Console.Out; 即可。请参考MSDN源代码 - Chris B

2
使用LinqPad:
或者使用SQL Server Profiler监视查询。我知道你以前可以在调试中悬浮在查询变量上,它会显示要执行的查询,但我不确定这是否仍然有效(绝对不适用于客户端应用程序)。

0

谢谢jfs,但是你提供的选项#1中的链接已经失效了。它没有显示任何相关文章。Chris B提供的MSDN文章链接对我很有帮助。

这是我的解决方案,因为我的不是控制台应用程序:

TextWriter tw = new StringWriter();
db.Log = tw;
IQueryable<Customer> custQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

string output = tw.ToString();   
// output variable has the generate SQL now

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接