使用:ui
app.UseDapper(opt => { opt.connStr = Configuration[「db:mysqlmaster」]; });
這兩段代碼很是簡單。就是編寫一個IApplicationBuilder的擴展方法,而後再擴展方法裏面獲取到注入的IDbconnection的接口,而後把委託方法傳遞進來的默認配置參數賦值進去,就能夠了。this
實際上,也能夠在AddService的時候就能夠把委託配置給賦值進去,不少第三方的庫就是這麼作的。
在asp.net core開發中。按照國際案例開始。都是先在Nuget安裝XXX包。好比咱們今天要用到的Dapperhtml
nuget裏面安裝Dappermysql
1.而後新建一個類文件DapperExtensions.cssql
由於Dapper是IDbConnection擴展出來的,因此咱們必須給IDbConnection一個默認的實現app
/// <summary> /// 注入服務 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="service"></param> /// <returns></returns> public static IServiceCollection AddDapper<T>(this IServiceCollection service) where T:class,IDbConnection { service.AddScoped<IDbConnection, T>(); return service; }
如何使用呢?在Startup裏面加入asp.net
services.AddDapper();async
理論上到這裏,就已經能夠勉強使用了。可是本文是記錄中間件的學習,因此咱們仍是得在後面學習一下中間件的寫法post
2.新建一個DapperMiddleWareExtensions.cs和DapperMiddleWare.cs文件學習
public class DapperMiddleWare { private readonly RequestDelegate _next; private DapperOption _option; public DapperMiddleWare(RequestDelegate next, DapperOption option) { _next = next; this._option = option; } public async Task InvokeAsync(HttpContext context) { var conn = context.RequestServices.GetService<IDbConnection>(); if (_option != default(DapperOption)) { if (!_option.connStr.IsNull()) { conn.ConnectionString = _option.connStr; } } // Call the next delegate/middleware in the pipeline await _next(context); } }
public static class DapperMiddleWareExtensions { public static IApplicationBuilder UseDapper(this IApplicationBuilder builder, Action<DapperOption> option = null) { DapperOption opt = new DapperOption(); if (option != null) { option(opt); } return builder.UseMiddleware<DapperMiddleWare>(opt); } }
使用:ui
app.UseDapper(opt => { opt.connStr = Configuration[「db:mysqlmaster」]; });
這兩段代碼很是簡單。就是編寫一個IApplicationBuilder的擴展方法,而後再擴展方法裏面獲取到注入的IDbconnection的接口,而後把委託方法傳遞進來的默認配置參數賦值進去,就能夠了。this
實際上,也能夠在AddService的時候就能夠把委託配置給賦值進去,不少第三方的庫就是這麼作的。