MiniProfiler是一款针对.NET,后来察觉MiniProfiler工具十二分好用

    MiniProfiler是一款针对.NET,
Ruby, Go and Node.js的属性分析的轻量级程序。能够对贰个页面本人,及该页面通过直接引用、Ajax、Iframe情势拜访的任何页面进行监督,监控内容包涵数据库内容,并得以浮现数据库访问的SQL(帮忙EF、EF
CodeFirst等 )。并且以很团结的艺术突显在页面上。

    MiniProfiler是一款针对.NET,
Ruby, Go and Node.js的天性分析的轻量级程序。能够对三个页面本人,及该页面通过直接引用、Ajax、Iframe格局拜访的其余页面举行监察,监察和控制内容包涵数据库内容,并得以显得数据库访问的SQL(援助EF、EF
CodeFirst等 )。并且以很和睦的方法展现在页面上。

    MiniProfiler官网:http://miniprofiler.com/

    MiniProfiler官网:http://miniprofiler.com/

   
MiniProfiler的1个特地实用的效应是它与数据库框架的购并。除了.NET原生的
DbConnection类,MiniProfiler还内置了对实业框架(Entity
Framework)以及LINQ to
SQL、RavenDb和MongoDB的辅助。任何履行的Step都会席卷当时询问的次数和所消费的日子。为了检查和测试常见的谬误,如N+1反情势,profiler将检测仅有参数值存在出入的四个查询。

   
MiniProfiler的1个特地有效的成效是它与数据库框架的融会。除了.NET原生的
DbConnection类,MiniProfiler还内置了对实业框架(Entity
Framework)以及LINQ to
SQL、RavenDb和MongoDB的协助。任何履行的Step都会席卷当时询问的次数和所开支的年华。为了检查和测试常见的荒谬,如N+1反形式,profiler将检查和测试仅有参数值存在差别的三个查询。

    MiniProfiler是以Apache License V2.0商谈揭橥的,你能够在NuGet找到。

    MiniProfiler是以Apache License V2.0切磋揭橥的,你能够在NuGet找到。

  过去直接利用Sqlserver
Profiler,可是发现实际是太痛心了,你只可以进行新建、过滤、清除、关闭等操作,而且过滤筛选往往相比较为难决定。后来发现MiniProfiler工具拾分好用。

  过去直接使用Sqlserver
Profiler,然则发现实际是太痛心了,你不得不举行新建、过滤、清除、关闭等操作,而且过滤筛选往往比较为难控制。后来意识MiniProfiler工具10分好用。

 
同类监察和控制工具有NanoProfiler,下载地址:https://github.com/ef-labs/nanoprofiler/issues/1

 
同类监察和控制工具有NanoProfiler,下载地址:https://github.com/ef-labs/nanoprofiler/issues/1

Demo演示

德姆o开发条件

  • Win10
  • VS2013

准备工作

新建MVC项目WebAppEF,使用Northwind数据库。

1、先安装MiniProfiler

图片 1

2、安装MiniProfiler.MVC4

图片 2

3、安装MiniProfiler.EF

图片 3

4、修改Global.asax文件

自小编那边只需求在支付条件使用SQL品质监察和控制,所以选择了#if
DEBUG,因为生产条件,大家一般是采取release形式。同时,MiniProfiler还支持授权,那里不做牵线。

using StackExchange.Profiling;
using StackExchange.Profiling.EntityFramework6;
using System;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace WebAppEF
{
publicclassMvcApplication : System.Web.HttpApplication
    {
protectedvoid Application_Start()
        {
#if DEBUG
MiniProfilerEF6.Initialize();
#endif
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
protectedvoid Application_BeginRequest(Object source, EventArgs e)
        {
#if DEBUG
MiniProfiler.Start();
#endif
        }
protectedvoid Application_EndRequest()
        {
#if DEBUG
MiniProfiler.Stop();
#endif
        }
    }
}

五 、在您的布局页(_Layout)中,比如以下那种布局,修改_Layout.cshtml

@using StackExchange.Profiling;
<head>
 ..
</head>
<body>
  ...
  @MiniProfiler.RenderIncludes()
</body>

6、修改配置文件Web.config

<system.webServer>
<handlers>
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode"/>
</handlers>
</system.webServer>

图片 4

7、添加控制器测试代码

        public ActionResult Index()
        {
            // create the entity object
            using (NorthwindEntities mobjentity = new NorthwindEntities())
            {
                ViewBag.SelectCustomer = mobjentity.Customers.Select(x => x.City == "Delhi").ToList();
            }

            var profiler = MiniProfiler.Current;
            using (profiler.Step("查询Customers的数据"))
            {
                using (NorthwindEntities entity = new NorthwindEntities())
                {
                    ViewBag.data = entity.Customers.ToList();
                }
            }
            return View();
        }

8、按F5调试运行

图片 5图片 6图片 7

说明:标记为duplicate的部分,代表在一次请求当中,重复执行了查询,可以进行优化。通过Step可以对独立的sql块进行标记。

Demo演示

德姆o开发环境

  • Win10
  • VS2013

忧盛危明干活

新建MVC项目WebAppEF,使用Northwind数据库。

1、先安装MiniProfiler

图片 8

2、安装MiniProfiler.MVC4

图片 9

3、安装MiniProfiler.EF

图片 10

4、修改Global.asax文件

自个儿那边只必要在开发环境使用SQL性能监察和控制,所以接纳了#if
DEBUG,因为生产环境,大家一般是接纳release方式。同时,MiniProfiler还扶助授权,那里不做牵线。

using StackExchange.Profiling;
using StackExchange.Profiling.EntityFramework6;
using System;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace WebAppEF
{
publicclassMvcApplication : System.Web.HttpApplication
    {
protectedvoid Application_Start()
        {
#if DEBUG
MiniProfilerEF6.Initialize();
#endif
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
protectedvoid Application_BeginRequest(Object source, EventArgs e)
        {
#if DEBUG
MiniProfiler.Start();
#endif
        }
protectedvoid Application_EndRequest()
        {
#if DEBUG
MiniProfiler.Stop();
#endif
        }
    }
}

五 、在您的布局页(_Layout)中,比如以下那种组织,修改_Layout.cshtml

@using StackExchange.Profiling;
<head>
 ..
</head>
<body>
  ...
  @MiniProfiler.RenderIncludes()
</body>

6、修改配置文件Web.config

<system.webServer>
<handlers>
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode"/>
</handlers>
</system.webServer>

图片 11

7、添加控制器测试代码

        public ActionResult Index()
        {
            // create the entity object
            using (NorthwindEntities mobjentity = new NorthwindEntities())
            {
                ViewBag.SelectCustomer = mobjentity.Customers.Select(x => x.City == "Delhi").ToList();
            }

            var profiler = MiniProfiler.Current;
            using (profiler.Step("查询Customers的数据"))
            {
                using (NorthwindEntities entity = new NorthwindEntities())
                {
                    ViewBag.data = entity.Customers.ToList();
                }
            }
            return View();
        }

8、按F5调试运行

图片 12图片 13图片 14

说明:标记为duplicate的部分,代表在一次请求当中,重复执行了查询,可以进行优化。通过Step可以对独立的sql块进行标记。

科学普及错误

大规模错误

1、The Entity Framework was already using a DbConfiguration instance before an attempt was made to add an ‘Loaded’ event handler. ‘Loaded’ event handlers can only be added as part of application start up before the Entity Framework is used. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information.

图片 15

解析:错误提醒的不经意是在试图为DbConfiguration
实例加Loaded事件在此以前已经在其余地点选拔了那一个实例了

杀鸡取蛋方案:把MiniProfiler.EF6.Initialize()在位于Database.SetInitializer<WebAppEF.Models.诺思windEntities>(null);
在此以前。

1、The Entity Framework was already using a DbConfiguration instance before an attempt was made to add an ‘Loaded’ event handler. ‘Loaded’ event handlers can only be added as part of application start up before the Entity Framework is used. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information.

图片 16

剖析:错误提醒的不经意是在试图为DbConfiguration
实例加Loaded事件此前早已在别的地点使用了这一个实例了

消除方案:把MiniProfiler.EF6.Initialize()在置身Database.SetInitializer<WebAppEF.Models.NorthwindEntities>(null);
从前。

2、Could not load file or assembly ‘MiniProfiler, Version=3.0.11.0, Culture=neutral, PublicKeyToken=b44f9351044011a3’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

图片 17

剖析:找不到MiniProfiler程序集大概它的依赖性项。程序集定义和引用不协作。

解决方案:查看Web.config中是还是不是留存如下配置节点

<dependentAssembly>
<assemblyIdentityname="MiniProfiler"publicKeyToken="b44f9351044011a3"culture="neutral" />
<bindingRedirectoldVersion="0.0.0.0-3.2.0.157"newVersion="3.2.0.157" />
</dependentAssembly>

若是不设有则增加,就算存在,则检查MiniProfiler版本号和packages.config中的版本号是否一律,假如区别就要对版本号进行改动。

参考:

动用MiniProfiler调试ASP.NET
MVC网站品质

使用MiniProfiler监察和控制EF与.NET MVC项目(Entity Framework
延伸种类1)

2、Could not load file or assembly ‘MiniProfiler, Version=3.0.11.0, Culture=neutral, PublicKeyToken=b44f9351044011a3’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

图片 18

分析:找不到MiniProfiler程序集只怕它的信赖性项。程序集定义和引用不匹配。

消除方案:查看Web.config中是或不是留存如下配置节点

<dependentAssembly>
<assemblyIdentityname="MiniProfiler"publicKeyToken="b44f9351044011a3"culture="neutral" />
<bindingRedirectoldVersion="0.0.0.0-3.2.0.157"newVersion="3.2.0.157" />
</dependentAssembly>

假若不存在则增加,若是存在,则检查MiniProfiler版本号和packages.config中的版本号是或不是一律,若是不平等就要对版本号进行改动。

参考:

利用MiniProfiler调节和测试ASP.NET
MVC网站品质

行使MiniProfiler监察和控制EF与.NET MVC项目(Entity Framework
延伸种类1)

相关文章