实体框架执行的确切sql查询

时间:2010-12-08 09:09:50

标签: entity-framework

问题似乎很清楚,但我会添加一个案例

using (var context = new MyEntities())
{
  if(context.mytable.Any(row => row.myfield == 2))
  {
    // do something here
  }
}

我是Entity Framework的新手。 我不知道如何检查执行的确切sql查询?

3 个答案:

答案 0 :(得分:8)

如上所述,您可以使用SQL事件探查器,LINQPad,EF Profiler等。

另一个鲜为人知的(有些人可能会说是懒惰)技巧是使用ObjectQuery.ToTraceString()扩展方法。

只需将您的查询转换为ObjectQuery<T>

var query = context.mytable.Any(row => row.myfield == 2));
var trace = ((ObjectQuery<MyTable>)query).ToTraceString();

它将吐出要执行的SQL。

最后一分钟的记录非常方便。

答案 1 :(得分:4)

您可以在此处找到类似的问题:How to view generated SQL from Entity Framework?

总而言之,您的选择是:

有关详细信息,请参阅引用的问题。

答案 2 :(得分:0)

如果要连接到SQL Server,可以使用SQL事件探查器来获取生成的SQL。