迷你Profiler是一款针对.NET,
Ruby, Go and Node.js的习性分析的轻量级程序。能够对三个页面本人,及该页面通过直接引用、Ajax、Iframe情势寻访的别样页面实行监察,监察和控制内容囊括数据库内容,并得以突显数据库访谈的SQL(帮忙EF、EF
CodeFirst等 )。何况以很友好的秘籍表以后页面上。

mvc中应用linq如何检查实验sql语句

.net中动用mvc开辟已经是一种侧向,不唯有是.net ,java
等更扩充的开垦者更赞成于mvc这种支付形式,在.net mvc
使用linq特别便利,各类办法扩张也是很便利的,看不到sql语句这么些应用就要采用MiniProfiler 来检查测量检验sql语句的和升迁sql语句的特性。MiniProfile

MVC MiniProfiler是Stack
Overflow公司企划的一款对ASP.NET
MVC的性质深入分析的小程序。能够对二个页面自个儿,及该页面通过一直引用、Ajax、Iframe格局拜候的其他页面实行监督检查,监控内容囊括数据库内容,并能够展现数据库访谈的SQL(扶助EF、EF
CodeFirst等 )。而且以很和谐的法子呈今后页面上。

该Profiler的二个极度实用的作用是它与数据库框架的融会。除了.NET原生的
DbConnection类,profiler还内置了对实业框架(Entity Framework)以及LINQ
to
SQL的支撑。任何实践的Step都会饱含当时查询的次数和所花费的时刻。为了检验常见的荒唐,如N+1反情势,profiler将检测唯有参数值存在差别的八个查询。

    MiniProfiler官网:

第一步:通过Nuget下载MiniProfile

图片 1

把这几个五个dll文件下载下来

或是部分同学不懂这些nuget
,作者第贰遍下这一个miniprofile,照着博客上写,报了本子错误。若是不用nuget
,那你就引述作者要好上传的那八个dll文件。MiniProfiler下载链接

   
MiniProfiler的二个特地有效的效应是它与数据库框架的并轨。除了.NET原生的
DbConnection类,MiniProfiler还停放了对实业框架(Entity
Framework)以及LINQ to
SQL、RavenDb和MongoDB的支持。任何推行的Step都会席卷当时询问的次数和所开销的时光。为了质量评定常见的失实,如N+1反方式,profiler将检查测量检验独有参数值存在出入的八个查询。

其次步:增多MiniProfiler相关检查测量试验的代码到Global.asax

using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using StackExchange.Profiling;
using StackExchange.Profiling.EntityFramework6;
namespace First_MinProfile
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            MiniProfilerEF6.Initialize();
        }
        protected void Application_BeginRequest()
        {
            MiniProfiler.Start();
        }
        protected void Application_EndRequest()
        {
            MiniProfiler.Stop();
        }
    }
}

a,b,c,d,e,f…….等27个字母认识的话,这几个八个事件差非常少的情趣能懂应该难度不是十分大。

    MiniProfiler是以Apache License V2.0商业事务发表的,你能够在NuGet找到。

其三步:相关突显和安顿文件的改变

1.在Views\Shared\_Layout.cshtml文件的body前边加上一段代码,让监督展现在页面上。@StackExchange.Profiling.MiniProfiler.RenderIncludes()

图片 2

2.Web.config加盟八个handlers
管理,webServer这么些节点下边加多一个handlers节点

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

图片 3

  过去一向选拔Sqlserver
Profiler,可是发掘其实是太伤心了,你只可以举行新建、过滤、清除、关闭等操作,何况过滤筛选往往相比较麻烦决定。后来发现迷你Profiler工具拾分好用。

第四步:查看结果粗略深入分析

图片 4

单击 more columns
大家能够见见图片 5

我们大致地分析一下从发送那条../Home/Index央浼到页面上海展览中心示出来花了185微秒,sql访谈数据库花24%,卖个关键,那么难点来了,整个sql语句的询问到底花了某个日子,即便你明白也得以留言哦!那样能够细微监察和控制措施内部的时日,方便、火速地帮大家搜索大家的次第的瓶颈所在。

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

Demo演示

德姆o开荒条件

  • Win10
  • VS2013

计划干活

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

1、先安装MiniProfiler

图片 6

2、安装MiniProfiler.MVC4

图片 7

3、安装MiniProfiler.EF

图片 8

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>

图片 9

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调试运行

图片 10图片 11图片 12

说明:标记为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 for more information.

图片 13

深入分析:错误提醒的大意是在试图为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)

图片 14

分析:找不到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
延伸连串1)

相关文章