如何查看實體框架生成的SQL?

ado.net entity-framework

如何查看實體框架生成的SQL?

(在我的特殊情況下,我正在使用mysql提供程序 - 如果它很重要)

一般承認的答案

您可以執行以下操作:

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

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

或在EF6中:

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

這將為您提供生成的SQL。


熱門答案

對於使用Entity Framework 6及更高版本的用戶,如果要在Visual Studio中查看輸出SQL(就像我一樣),則必須使用新的日誌記錄/攔截功能。

添加以下行將在Visual Studio輸出面板中吐出生成的SQL(以及其他與執行相關的詳細信息):

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

有關在這個精彩的博客系列中登錄EF6的更多信息: http//blog.oneunicorn.com/2013/05/08/ef6-sql-logging-part-1-simple-logging/

注意:確保以DEBUG模式運行項目。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因