查看LINQ生成的SQL

Boh*_*ohn 7 c# linq

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

var query = (from a in this.Context.Apples select a.Name).ToList();
Run Code Online (Sandbox Code Playgroud)

当我想看看正在生成什么SQL时LINQ,我所做的就是ToList()在这个LINQ语句之后注释掉并在命令上放置断点然后我可以将其悬停并读取SQL.

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

Mar*_*rty 5

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

public class MyContext : DbContext{

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


Edu*_*ada 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();
Run Code Online (Sandbox Code Playgroud)

还有 Linqpad:

在此输入图像描述