例如,如果我有一个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的正确方法吗?
您还可以将您的上下文的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)
是的,这是正确的方法,但是当然,还有其他方法:
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: