从LINQ到SQL获取SQL查询?

我有一个查询,我通过byte[]作为参数。 我试图从SQL查询中取出它并在pipe理工作室中运行该查询来进行debugging。 我如何从中提取SQL语句?

  committeeMember = db.Committee_Member.FirstOrDefault(x => x.Customer_Number == activity.Contact.Number && x.Position_Start_Date.Value.Year == activity.EndDate && x.Committee_Id == activity.Committee.Id && x.Cancelled != 1); 

在debugging器将鼠标hover在commiteeMembervariables上 – 它将显示生成的SQL查询:

在这里输入图像描述

这是ToString()返回查询的内容。 您可以通过调用ToString手动获取相同的生成的SQL查询:

 string sql = committeeMember.ToString(); 

这个重写的方法在内部调用ObjectQuery.ToTraceString() ,它将返回将在数据源上运行的命令。


也可以使用SQL事件探查器或entity framework事件探查器查看执行了哪个SQL查询。

顺便说一句,LINQ to SQL不是entity framework。 如果是前者,你可以设置[yourDataContext].Log = Console.Out (或者其他一些stream式 [yourDataContext].Log = Console.Out )并获取查询。

在查询中,可以考虑按如下方式编写ToString技巧:

 var committeeMemberQuery = db.Committee_Member.*WHERE* (x => x.Customer_Number == activity.Contact.Number && x.Position_Start_Date.Value.Year == activity.EndDate && x.Committee_Id == activity.Committee.Id && x.Cancelled != 1 ); var committeeMember = committeeMemberQuery.FirstOrDefault(); 

现在你可以做committeeMemberQuery.ToString()但是你不会得到参数信息(你将DataContext.Log = Console.Out但是再一次,这不是entity framework,它是LINQ to SQL。