From 90858c80d9921b555119f41060c1f883f6e6ffc5 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期四, 26 十二月 2024 12:49:35 +0800 Subject: [PATCH] 提交 --- DocumentServiceAPI.Core/DbContext.cs | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 110 insertions(+), 1 deletions(-) diff --git a/DocumentServiceAPI.Core/DbContext.cs b/DocumentServiceAPI.Core/DbContext.cs index 235a7fe..9c98cfa 100644 --- a/DocumentServiceAPI.Core/DbContext.cs +++ b/DocumentServiceAPI.Core/DbContext.cs @@ -1,6 +1,16 @@ -锘縰sing Furion; +锘縰sing DocumentServiceAPI.Enum; +using DocumentServiceAPI.Utility; +using Furion; +using Furion.Logging; +using Furion.Logging.Extensions; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; using SqlSugar; +using System; using System.Collections.Generic; +using System.Linq; +using System.Reflection; namespace DocumentServiceAPI.Core; @@ -18,5 +28,104 @@ , db => { // 杩欓噷閰嶇疆鍏ㄥ眬浜嬩欢锛屾瘮濡傛嫤鎴墽琛� SQL + + }); + public static void AddSqlsugarSetup(this IServiceCollection services) + { + var configConnection = App.GetConfig<List<ConnectionConfig>>("ConnectionConfigs"); + + + + services.AddSingleton<ISqlSugarClient>(s => + { + SqlSugarScope sqlSugar = new SqlSugarScope(configConnection, + db => + { + db.CurrentConnectionConfig.ConfigureExternalServices = new ConfigureExternalServices() + { + //鍒ゆ柇鏄惁寮�鍚痳edis璁剧疆浜岀骇缂撳瓨鏂瑰紡 + DataInfoCacheService = new SqlSugarRedisCache(), + //妯″瀷瀹氫箟涓� int?鍙锋椂鑷姩涓哄彲绌� + EntityService = (c, p) => + { + /***楂樼増C#鍐欐硶***/ + //鏀寔string?鍜宻tring + if (p.IsPrimarykey == false && new NullabilityInfoContext() + .Create(c).WriteState is NullabilityState.Nullable) + { + p.IsNullable = true; + } + } + + }; + db.Aop.OnLogExecuting = (sql, pars) => + { + Console.WriteLine(sql);//杈撳嚭sql,鏌ョ湅鎵цsql聽鎬ц兘鏃犲奖鍝� + + + //鑾峰彇鍘熺敓SQL鎺ㄨ崘聽5.1.4.63聽聽鎬ц兘OK + //UtilMethods.GetNativeSql(sql,pars) + + //鑾峰彇鏃犲弬鏁板寲SQL聽瀵规�ц兘鏈夊奖鍝嶏紝鐗瑰埆澶х殑SQL鍙傛暟澶氱殑锛岃皟璇曚娇鐢� + //UtilMethods.GetSqlString(DbType.SqlServer,sql,pars) + + + }; + db.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings() + { + //鎵�鏈� 澧炪�佸垹 銆佹敼 浼氳嚜鍔ㄨ皟鐢�.RemoveDataCache()娓呯悊浜岀骇缂撳瓨 + IsAutoRemoveDataCache = true + }; + db.Aop.OnError = (exp) => + { + $"鏁版嵁搴撴墽琛岄敊璇簡{exp}".LogInformation(); + // NlogUtil.WriteFileLog(NLog.LogLevel.Error, LogType.Other, "SqlSugar", "鎵цSQL閿欒浜嬩欢", exp); + }; + + //鍗曚緥鍙傛暟閰嶇疆锛屾墍鏈変笂涓嬫枃鐢熸晥 + //db.Aop.OnLogExecuting = (sql, pars) => + //{ + // //鑾峰彇浣淚OC浣滅敤鍩熷璞� + // // var appServive = s.GetService<IHttpContextAccessor>(); + // // var obj = appServive?.HttpContext?.RequestServices.GetService<Log>(); + // // Console.WriteLine("AOP" + obj.GetHashCode()); + //}; + }); + return sqlSugar; + }); + } + + /// <summary> + /// 鏍规嵁鍛藉悕绌洪棿鍜屾暟鎹簱杩炴帴key濉〃 + /// 娉ㄦ剰锛屽彧鏈夌户鎵夸簡ezBaseModel 鐨勬ā鍨嬫墠浼氬垱寤� + /// </summary> + /// <param name="app"></param> + /// <param name="ConfigId">閰嶇疆搴撳悕</param> + /// <param name="ModeProjectName"></param> + public static void DbCodeFirst(this IApplicationBuilder app, string ModeProjectName, string? Modenamespace = null, string? ConfigId = null) + { + + var _db = app.ApplicationServices.GetService<ISqlSugarClient>(); + //鍒囨崲鏁版嵁搴� + if (!string.IsNullOrEmpty(ConfigId)) + _db.AsTenant().ChangeDatabase(ConfigId); + + //寤哄簱 + _db.DbMaintenance.CreateDatabase(); + Type[]? types = UtilityFun.GetAllAssembly().Where(x => x.FullName.Contains(ModeProjectName + ",")).FirstOrDefault()?.GetTypes().WhereIF(!string.IsNullOrEmpty(Modenamespace), name => name.FullName.Contains(Modenamespace + ".")).ToArray().Where(x => x.IsSubclassOf(typeof(BaseModel))).ToArray(); + + _db.CodeFirst.InitTables(types);//鏍规嵁types鍒涘缓琛� + + } + public static void DbCodeFirst(this IApplicationBuilder app, Type Obj, string? ConfigId = null) + { + var _db = app.ApplicationServices.GetService<ISqlSugarClient>(); + //鍒囨崲鏁版嵁搴� + if (!string.IsNullOrEmpty(ConfigId)) + _db.AsTenant().ChangeDatabase(ConfigId); + //寤哄簱 + _db.DbMaintenance.CreateDatabase(); + _db.CodeFirst.InitTables(Obj);//鏍规嵁types鍒涘缓琛� + } } -- Gitblit v1.9.1