我们正在分析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
答案 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);
...