如果我有一个LINQ to SQL语句,例如
var query = (from a in this.Context.Apples select a.Name).ToList();
当我想查看LINQ
生成的SQL时,我所做的就是注释ToList()
并在此LINQ
语句之后在命令上放置一个断点,然后我可以将其悬停并阅读SQL。
我的问题:这是获取生成的SQL的正确方法吗?
答案 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:
答案 2 :(得分:1)
您还可以使用SQL Server Profiler,添加跟踪,并在服务器执行时查看生成的查询。