query - select linq c# example
Obtener consulta SQL de LINQ a SQL? (2)
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 declaración 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:
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.