如何查看每个页面上运行的所有SQL查询?

时间:2012-09-07 04:09:39

标签: entity-framework asp.net-mvc-4

Django有一个调试工具栏,可以让我看到正在运行的所有查询,如何在MVC4中查看它们?

3 个答案:

答案 0 :(得分:2)

如果您想查看刚执行的SQL命令,可以使用IntelliTrace(仅适用于VS Ultimate版本)。如果您希望按照请求进行性能分析,可以尝试MVC Mini Profiler。 EF没有任何内置工具来跟踪执行的SQL命令。

答案 1 :(得分:2)

您可以考虑很多工具。我在http://www.thinqlinq.com/Post.aspx/Title/LINQ-to-Database-Performance-hints讨论了其中的一些,包括Intellitrace和SQL Profiler,以及其他相对便宜的分析工具,如MVC MiniProfiler,ORM Profiler,Huagati的LINQ to SQL Profiler,EF Prof,或者至少检查使用LinqPad为您的查询生成的代码。其中一些选项要求您修改现有代码库以插入探查器。其他人只是拦截数据库的流量。只要你在学习的时候使用某些东西,你使用哪一个并不重要。

答案 2 :(得分:1)

Oks,我们举一个northwind数据库的例子

using(NorthwindEntities context = new NorthwindEntities())
{
   var query = from p in context.Products
               where p.Product_ID == 3
               select p;

   //Query can be traced like this
   var SqlQuery = (System.Data.Objects.ObjectQuery<Product>)query;
   Console.WriteLine(SqlQuery.ToTraceString());
}

您可以在页面加载时使用此var SqlQuery = (System.Data.Objects.ObjectQuery<Product>)query;,并可以在任意位置打印该值。