¿Cómo veo el SQL generado por Entity Framework?

Resuelto nos asked hace 15 años • 26 respuestas

¿Cómo veo el SQL generado por el marco de la entidad?

(En mi caso particular estoy usando el proveedor mysql - si es importante)

nos avatar Sep 12 '09 02:09 nos
Aceptado

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.

Matt Nibecker avatar Dec 23 '2013 21:12 Matt Nibecker

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ó.

Nick Berardi avatar Sep 11 '2009 19:09 Nick Berardi