查看LINQ生成的SQL

时间:2016-01-21 23:12:32

标签: c# linq

如果我有一个LINQ to SQL语句,例如

var query = (from a in this.Context.Apples select a.Name).ToList();

当我想查看LINQ生成的SQL时,我所做的就是注释ToList()并在此LINQ语句之后在命令上放置一个断点,然后我可以将其悬停并阅读SQL。

我的问题:这是获取生成的SQL的正确方法吗?

3 个答案:

答案 0 :(得分:5)

您还可以将上下文的Log属性设置为:

public class MyContext : DbContext{

  MyContext(){
        Database.Log = Console.WriteLine;
        //or like this 
        //Database.Log = message => Trace.TraceInformation(message);
  }
}

答案 1 :(得分:3)

是的,这是正确的方法,但当然还有其他方式:

var context = new DataClasses1DataContext();

var sb = new StringWriter();
context.Log = sb;

var query = (from a in context.Persons select a.Name);

string s = query.ToString();
string command = context.GetCommand(query).CommandText;

//The log requires the query to actually hit the database
query.ToList();
string log = sb.ToString();

还有Linqpad:

enter image description here

答案 2 :(得分:1)

您还可以使用SQL Server Profiler,添加跟踪,并在服务器执行时查看生成的查询。