Wie zeige ich die vom Entity Framework generierte SQL an?

ado.net entity-framework

Frage

Wie zeige ich die vom Entity Framework generierte SQL an?

(In meinem speziellen Fall verwende ich den MySQL-Anbieter - wenn es darauf ankommt)

Akzeptierte Antwort

Sie können Folgendes tun:

IQueryable query = from x in appEntities
             where x.id = 32
             select x;

var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();

oder in EF6:

var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query)
            .ToTraceString();

Dadurch erhalten Sie die generierte SQL.


Beliebte Antwort

Wenn Sie die Ausgabe-SQL in Visual Studio anzeigen möchten (wie ich), müssen Sie bei Entity Framework 6 und höher die neue Protokollierungs- / Abfangfunktionalität verwenden.

Durch das Hinzufügen der folgenden Zeile wird das generierte SQL (zusammen mit zusätzlichen ausführungsbezogenen Details) im Visual Studio-Ausgabefenster ausgespuckt:

using (MyDatabaseEntities context = new MyDatabaseEntities())
{
    context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
    // query the database using EF here.
}

Weitere Informationen zum Einloggen in EF6 in dieser schicken Blog-Serie: http://blog.oneunicorn.com/2013/05/08/ef6-sql-logging-part-1-simple-logging/

Hinweis: Stellen Sie sicher, dass Sie Ihr Projekt im DEBUG-Modus ausführen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum