Obtener consulta SQL de LINQ a SQL?

Tengo una consulta que estoy pasando byte[] como parámetro. Estoy tratando de sacar la consulta SQL y ejecutar esa consulta en el estudio de administración para depurar. ¿Cómo puedo extraer la statement SQL de ella?

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

En el depurador, sitúe el cursor sobre la variable commiteeMember – se mostrará la consulta SQL generada:

enter image description here

Esto es lo que ToString() devuelve para la consulta. Puede obtener la misma consulta SQL generada manualmente llamando a ToString:

 string sql = committeeMember.ToString(); 

Este método reemplazado llama internamente a ObjectQuery.ToTraceString() que devuelve comandos que se ejecutarán en el origen de datos.


También puede usar el Analizador de SQL o Entidad Framework Profiler para ver qué consulta SQL se ejecutó.

Por cierto, LINQ to SQL no es un marco de entidad. Si el primero, puede establecer [yourDataContext].Log = Console.Out (o alguna otra [yourDataContext].Log = Console.Out secuencias ) y obtener la consulta.

En la consulta que tienes, considera escribirla de la siguiente manera para poder hacer el truco 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(); 

Ahora puedes hacer committeeMemberQuery.ToString() sin embargo no obtendrás información de parámetros (lo harás con DataContext.Log = Console.Out pero de nuevo, eso no es Entity Framework, es LINQ to SQL.