C# 如何显示实体框架LINQ to SQL运行的完整SQL查询

C# 如何显示实体框架LINQ to SQL运行的完整SQL查询,c#,sql-server,linq,entity-framework,linq-to-sql,C#,Sql Server,Linq,Entity Framework,Linq To Sql,假设我有一个LINQ查询: var query = (from person in ctx.People where person.Name == "John" select person); ctx是从System.Data.Entity.DbContext继承的上下文 现在,如何获得包含参数的完整SQL查询?我试过: var sql = ((ObjectQuery) query).ToTraceString(); sql = query.String(); context.Database

假设我有一个LINQ查询:

var query = (from person in ctx.People where person.Name == "John" select person);
ctx
是从
System.Data.Entity.DbContext
继承的上下文

现在,如何获得包含参数的完整SQL查询?我试过:

var sql = ((ObjectQuery) query).ToTraceString();
sql = query.String();
context.Database.Log = (s) => sql += s;
第一个解决方案引发无效的强制转换异常。 第二种解决方案只提供了引用未包含的变量的查询部分。
第三个以奇怪的格式打印“变量”;
字符串Sql=ctx.GetCommand(query).CommandText

您试过LINQPad吗?查询是正确的复制/粘贴还是仅键入?其中person.Name=“John”正在执行赋值而不是相等性测试。@user1666620只是一个随机键入的查询,修复了该错误now@user1151923您使用的是哪个版本的EF?方法各不相同。。。e、 g.如果您使用的是EF6,
DbContext
类的可能副本不包含GetCommand方法,则ToTraceString将无法像您使用它那样简单地工作。