MiniProfiler是一款针对.NET, Ruby, Go and Node.js的性能分析的轻量级程序。可以对一个页面本身,及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的SQL(支持EF、EF CodeFirst等 )。并且以很友好的方式展现在页面上。
MiniProfiler的一个特别有用的功能是它与数据库框架的集成。除了.NET原生的 DbConnection类,MiniProfiler还内置了对实体框架(Entity Framework)以及LINQ to SQL、RavenDb和MongoDB的支持。任何执行的Step都会包括当时查询的次数和所花费的时间。为了检测常见的错误,如N+1反模式,profiler将检测仅有参数值存在差异的多个查询。
MiniProfiler是以Apache License V2.0协议发布的,你可以在NuGet找到。
过去一直使用Sqlserver Profiler,但是发现实在是太痛苦了,你不得不进行新建、过滤、清除、关闭等操作,而且过滤筛选往往比较难以控制。后来发现MiniProfiler工具非常好用。
Demo开发环境
Win10
VS2013
准备工作
新建MVC项目WebAppEF,使用Northwind数据库。
1、先安装MiniProfiler
2、安装MiniProfiler.MVC4
3、安装MiniProfiler.EF
4、修改Global.asax文件
我这里只需要在开发环境使用SQL性能监控,所以使用了#if DEBUG,因为生产环境,我们一般是采用release模式。同时,MiniProfiler还支持授权,这里不做介绍。
5、在你的布局页(_Layout)中,比如以下这种结构,修改_Layout.cshtml
分析:错误提示的大意是在试图为DbConfiguration 实例加Loaded事件之前已经在其它地方使用了这个实例了
解决方案:把MiniProfiler.EF6.Initialize()在放在Database.SetInitializer<WebAppEF.Models.NorthwindEntities>(null); 之前。
分析:找不到MiniProfiler程序集或者它的依赖项。程序集定义和引用不匹配。
解决方案:查看Web.config中是否存在如下配置节点
如果不存在则添加,如果存在,则检查MiniProfiler版本号和packages.config中的版本号是否一致,如果不一致就要对版本号进行修改。
参考:
<a href="http://www.cnblogs.com/shanyou/archive/2012/04/03/2430977.html" target="_blank">使用MiniProfiler调试ASP.NET MVC网站性能</a>
<a href="http://www.cnblogs.com/GuZhenYin/p/5408632.html" target="_blank">采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)</a>
本文转自邹琼俊博客园博客,原文链接:http://www.cnblogs.com/jiekzou/p/6374726.html,如需转载请自行联系原作者