有没有办法获取LINQ查询创建的SQL?

时间:2010-01-18 19:16:53

标签: c# asp.net sql linq

我一直在开发一个ASP.NET页面,并且一直在使用LINQ来处理与MS SQL服务器的通信。我对基本的SQL很好,但是使用LINQ设计查询我会好得多。我知道它们很相似,但我发现在LINQ中设计复杂查询更容易。我的问题是:有没有办法在LINQ中设计查询,然后获取它生成的SQL?我想在存储过程中嵌入SQL,因为多个页面(我的控件之外)需要进行相同的查询。

4 个答案:

答案 0 :(得分:6)

是。 LINQ数据库上下文有一个 Log 属性,用于输出它执行的SQL。您也可以通过名为LinqPad的免费产品和名为Linqer的商业产品来实现这一目标。

答案 1 :(得分:3)

你可以通过两种方式获得:

  1. 使用LINQPad
  2. 在查询上使用ToString()来获取其SQL表单:

    var query = from SomeTable中的x             其中x.SomeField == 5             选择x.SomeOtherField; Console.WriteLine(query.ToString());

答案 2 :(得分:1)

如果您想获得更深入的信息,可以使用Linq to Sql Profiler来显示所有查询以及alerts

答案 3 :(得分:1)

编写针对SQL Server执行的linq语句时,请始终在SQL Server Profiler中对它们进行观察。在SQL内部执行的解释通常会让您感到惊讶。

在性能工具/ SQL Server Profiler中启动新的跟踪。

在您的应用中执行您的查询, 抓取Profiler的输出 粘贴到SQL Server查询分析器