从LINQ到SQL获取SQL查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从LINQ到SQL获取SQL查询?相关的知识,希望对你有一定的参考价值。

我有一个查询,我将byte[]作为参数传递。我试图从中获取SQL查询并在管理工作室中运行该查询以进行调试。如何从中提取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);
答案

在调试器中将鼠标悬停在commiteeMember变量上 - 它将显示生成的SQL查询:

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

string sql = committeeMember.ToString();

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


您还可以使用SQL事件探查器或实体框架事件探查器查看执行了哪个SQL查询。

另一答案

顺便说一句,LINQ to SQL不是实体框架。如果是前者,您可以设置[yourDataContext].Log = Console.Out(或some other stream writer)并获取查询。

在你的查询中,考虑编写如下以便能够执行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但是再次,那不是实体框架,它是LINQ to SQL。

以上是关于从LINQ到SQL获取SQL查询?的主要内容,如果未能解决你的问题,请参考以下文章

Linq 查询获取与 sql 查询视图不同的值

具有XPath查询的SQL到LINQ转换

如何将参数从 LINQ 查询传递到 SQL 视图?

使用 Linq to sql 从两个表中获取所有数据

使用 LINQ 和实体框架在一个 SQL 查询中从多个表中提取数据

linq查询执行时返回对应的sql