.net core Profiler 监控 NPOCO ORM 的 SQL语句

1、在 nuget.org 安装 Profiler.AspNetCore.Mvc 

PM> Install-Package MiniProfiler.AspNetCore.Mvc

2、在 Startup.cs 中修改ConfigureServices 

public void ConfigureServices(IServiceCollection services)
        {
           
            services.AddControllersWithViews();
            // miniprofile conf.
            services.AddMiniProfiler(options => 
            {
                options.PopupRenderPosition = RenderPosition.BottomLeft;
                options.PopupShowTimeWithChildren = true;

            });
        }

3、在 Startup.cs 中修改  Configure

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMiniProfiler();
            //重点这个
            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                //endpoints.MapGet("/", async context =>
                //{
                //    await context.Response.WriteAsync("Hello World!");
                //});
                endpoints.MapControllerRoute(
                    name:"Home",
                    pattern:"{controller=Home}/{action=Index}/{id?}");
            });
        }

4、重写 NPOCO 的 Database中 OnConnectionOpened 方法(官网wike这个地方是错误的 2020.2.25记录)

public class MyDatabase: Database
    {
        public MyDatabase(string connectionString) : base(connectionString, DatabaseType.SqlServer2012, SqlClientFactory.Instance) { }
        protected override DbConnection OnConnectionOpened(DbConnection conn)
        {
            return new ProfiledDbConnection(conn, MiniProfiler.Current);
        }
    }

5、使用 (稍微不同,我在 MyDatabase 中封装了一下)

 public IEnumerable<LoginLog> Find() {
            using (var db = new MyDatabase("db")
            {
                var query = db.Fetch<LoginLog>();
                return query;
            }
        }

6、_ViewImports.cshtml 添加对 Profiler 的支持

@using Test_MiniProfile
@using StackExchange.Profiling
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MiniProfiler.AspNetCore.Mvc

7、在母版页合适的地方展示 Profiler

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - BaseMvcWeb</title>
</head>
<body>
   
            @RenderBody()
        <mini-profiler />
</body>
</html>

 

谢谢

posted @ 2020-02-25 00:07  游子善心  阅读(8)  评论(0编辑  收藏  举报  来源