实体框架命名查询

时间:2016-10-01 01:09:08

标签: c# sql-server entity-framework azure sqlprofiler

我们正在分析Azure“查询性能洞察”以查找昂贵的查询,问题在于,没有办法将SQL生成与实体框架查询相关联。

是否有任何扩展方法或其他任何东西可以做这样的事情:

SQL生成:

-- BlahMethod
SELECT Id
FROM Table1

Entity Framework cmd:

Context.Table1.Naming("BlahMethod").ToList()

甚至更好:

Context.Table1.ToList() // intercept sql generated by EF and put through reflection the Method and Namespace "MyAssembly.Foo.MyMethodName"

SQL Generated:

-- MyAssembly.Foo.MyMethodName
SELECT Id
FROM Table1

1 个答案:

答案 0 :(得分:1)

是的,请看这篇文章Logging and Intercepting Database Operations

它可以像使用Console.Write一样简单:

using (var context = new BlogContext()) 
{ 
    context.Database.Log = Console.Write; 

    // Your code here... 
}

或者您可以使用日志类:

  using (var db = new MyDBContext())
            {

                db.Database.Log = s => Log.TraceVerbose("DB Context:{0}", s);
...