通过方法链接获取EF6生成的sql

时间:2018-06-01 13:10:18

标签: c# linq entity-framework-6

通过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);

1 个答案:

答案 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);