MiniProfiler工具介绍

    MiniProfiler是壹款针对.NET,
Ruby, Go and Node.js的质量分析的轻量级程序。能够对3个页面自身,及该页面通过一向引用、Ajax、Iframe方式拜访的其余页面进行监察和控制,监察和控制内容囊括数据库内容,并能够显示数据库访问的SQL(援救EF、EF
CodeFirst等 )。并且以很团结的艺术表今后页面上。

    MiniProfiler是1款针对.NET,
Ruby, Go and Node.js的性子分析的轻量级程序。能够对1个页面自己,及该页面通过直接引用、Ajax、Iframe形式拜访的任何页面实行监督,监察和控制内容包含数据库内容,并得以显得数据库访问的SQL(援助EF、EF
CodeFirst等 )。并且以很谈得来的格局突显在页面上。

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

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

   
MiniProfiler的三个专程有效的法力是它与数据库框架的合龙。除了.NET原生的
DbConnection类,MiniProfiler还内置了对实业框架(Entity
Framework)以及LINQ to
SQL、RavenDb和MongoDB的帮助。任何履行的Step都会席卷当时询问的次数和所消费的小时。为了检查评定常见的失实,如N+壹反情势,profiler将检查测试仅有参数值存在差异的三个查询。

   
MiniProfiler的1个特别实用的功用是它与数据库框架的并轨。除了.NET原生的
DbConnection类,迷你Profiler还内置了对实体框架(Entity
Framework)以及LINQ to
SQL、RavenDb和MongoDB的补助。任何履行的Step都会席卷当时询问的次数和所耗费的时刻。为了质量评定常见的错误,如N+一反方式,profiler将检查评定仅有参数值存在差其余三个查询。

    MiniProfiler是以Apache License V二.0合计发表的,你可以在NuGet找到。

    MiniProfiler是以Apache License V二.0商业事务揭橥的,你能够在NuGet找到。

  过去径直利用Sqlserver
Profiler,不过发现实际是太难过了,你不得不举办新建、过滤、清除、关闭等操作,而且过滤筛选往往对比为难控制。后来意识MiniProfiler工具十二分好用。

  过去直接使用Sqlserver
Profiler,但是发现其实是太痛心了,你不得不举办新建、过滤、清除、关闭等操作,而且过滤筛选往往相比麻烦控制。后来意识MiniProfiler工具十二分好用。

 
同类监察和控制工具有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,因为生产环境,大家1般是应用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
        }
    }
}

5、在你的布局页(_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.EF六.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.EF陆.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>

要是不设有则拉长,假设存在,则检查迷你Profiler版本号和packages.config中的版本号是或不是1律,倘诺不均等就要对版本号进行改动。

参考:

利用MiniProfiler调节和测试ASP.NET
MVC网址质量

运用MiniProfiler监察和控制EF与.NET MVC项目(Entity Framework
延伸连串一)

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中的版本号是或不是相同,如若差异就要对版本号实行改动。

参考:

接纳迷你Profiler调节和测试ASP.NET
MVC网站性能

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

相关文章

admin

网站地图xml地图