新兴发觉MiniProfiler工具11分好用伟德国际1946,后来发觉MiniProfiler工具11分好用

    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的贰个特意有效的效能是它与数据库框架的融会。除了.NET原生的
DbConnection类,MiniProfiler还放置了对实业框架(Entity
Framework)以及LINQ to
SQL、RavenDb和MongoDB的支撑。任何履行的Step都会包括当时查询的次数和所消费的年月。为了检查和测试常见的一无所能,如N+1反形式,profiler将检测仅有参数值存在差其余七个查询。

   
MiniProfiler的三个特意有效的机能是它与数据库框架的合并。除了.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工具12分好用。

  过去径直利用Sqlserver
Profiler,然而发现实际上是太忧伤了,你不得不进行新建、过滤、清除、关闭等操作,而且过滤筛选往往相比为难控制。后来发觉MiniProfiler工具十一分好用。

 
同类监察和控制工具有NanoProfiler,下载地址:伟德国际1946,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

伟德国际1946 1

2、安装MiniProfiler.MVC4

伟德国际1946 2

3、安装MiniProfiler.EF

伟德国际1946 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>

伟德国际1946 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调试运行

伟德国际1946 5伟德国际1946 6伟德国际1946 7

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

Demo演示

Demo开发条件

  • Win10
  • VS2013

绸缪未雨干活

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

1、先安装MiniProfiler

伟德国际1946 8

2、安装MiniProfiler.MVC4

伟德国际1946 9

3、安装MiniProfiler.EF

伟德国际1946 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>

伟德国际1946 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调试运行

伟德国际1946 12伟德国际1946 13伟德国际1946 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.

伟德国际1946 15

解析:错误提醒的马虎是在打算为DbConfiguration
实例加Loaded事件在此以前已经在此外地方使用了这些实例了

焚薮而田方案:把MiniProfiler.EF6.Initialize()在位于Database.SetInitializer<WebAppEF.Models.NorthwindEntities>(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.

伟德国际1946 16

解析:错误提醒的不经意是在盘算为DbConfiguration
实例加Loaded事件以前早已在别的市方选拔了那个实例了

消除方案:把MiniProfiler.EF6.Initialize()在置身Database.SetInitializer<WebAppEF.Models.诺思windEntities>(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)

伟德国际1946 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)

伟德国际1946 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)

相关文章