通过EF6获取生成的SQL的简单搜索会返回大量结果,甚至是Stackoverflow中的许多结果。但是当使用方法链时,他们都没有提出任何方法。
例如(How do I view the SQL generated by the Entity Framework?):
IQueryable query = from x in appEntities
where x.id = 32
select x;
var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();
但我希望得到生成的sql查询,如果它被用作:
appEntities.x.Where(x.id==32);
答案 0 :(得分:3)
您可以使用 Diagnostic/Profiling Tools
调试 - > Windows - >显示诊断工具( Ctrl + Alt + F2 )
在Visual Studio中,然后在调试时,转到Events选项卡并单击ADO.NET事件(或只是悬停),它将包含查询到DB的实际sql字符串。
或者您可以添加此行
dbContext.Database.Log = s => Debug.WriteLine(s);
在您的查询之前它将在输出中打印出您的查询 - >调试。
如果您愿意,可以在某些字符串中存储:
//TODO: Remove after checking
StringBuilder log = new StringBuilder();
dbContext.Database.Log = s => log.Append(s);