¿Cómo veo el SQL generado por Entity Framework?
¿Cómo veo el SQL generado por el marco de la entidad?
(En mi caso particular estoy usando el proveedor mysql - si es importante)
Para aquellos que usan Entity Framework 6 y versiones posteriores (no en EF CORE; vea el comentario a continuación), si desean ver el SQL de salida en Visual Studio (como lo hice yo), deben usar la nueva funcionalidad de registro/intercepción.
Al agregar la siguiente línea, se mostrará el SQL generado (junto con detalles adicionales relacionados con la ejecución) en el panel de salida de Visual Studio:
using (MyDatabaseEntities context = new MyDatabaseEntities())
{
context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
// query the database using EF here.
}
Más información sobre cómo iniciar sesión en EF6 en esta ingeniosa serie de blogs: http://blog.oneunicorn.com/2013/05/08/ef6-sql-logging-part-1-simple-logging/
Nota: Asegúrese de estar ejecutando su proyecto en modo DEBUG.
Puedes hacer lo siguiente:
IQueryable query = from x in appEntities
where x.id == 32
select x;
var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();
o en EF6:
var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query)
.ToTraceString();
o en EF6.3+:
var sql = ((dynamic)flooringStoresProducts).Sql;
Eso le dará el SQL que se generó.