后来察觉MiniProfiler工具极度好用,后来发觉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的一个特意实用的效用是它与数据库框架的三合一。除了.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工具分外好用。

  过去一向接纳Sqlserver
Profiler,可是发现其实是太痛心了,你只好举办新建、过滤、清除、关闭等操作,而且过滤筛选往往相比难以决定。后来意识MiniProfiler工具分外好用。

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

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

Demo演示

Demo开发环境

  • 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
        }
    }
}

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>

新匍京视频在线 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演示

Demo开发条件

  • 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
        }
    }
}

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.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.诺思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)

新匍京视频在线 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)

相关文章