如何查看实体框架生成的SQL?

我如何查看由实体框架生成的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模式下运行你的项目。


如果您使用的是DbContext,则可以执行以下操作来获取SQL:

var result = from i in myContext.appEntities
             select new Model
             {
                 field = i.stuff,
             };
var sql = result.ToString();
链接地址: http://www.djcxy.com/p/29233.html

上一篇: How do I view the SQL generated by the Entity Framework?

下一篇: What is object serialization?