| using SqlSugar; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Dynamic; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
| using WIDESEA_Core.Const; | 
| using WIDESEA_Core.Helper; | 
| using WIDESEA_Core.Tenants; | 
|   | 
| namespace WIDESEA_Core.DB | 
| { | 
|     public class BaseDBConfig | 
|     { | 
|         /* 之前的单库操作已经删除,如果想要之前的代码,可以查看我的GitHub的历史记录 | 
|          * 目前是多库操作,默认加载的是appsettings.json设置为true的第一个db连接。 | 
|          */ | 
|         public static List<MutiDBOperate> MutiConnectionString => MutiInitConn(); | 
|   | 
|         private static string DifDBConnOfSecurity(params string[] conn) | 
|         { | 
|             foreach (var item in conn) | 
|             { | 
|                 try | 
|                 { | 
|                     if (File.Exists(item)) | 
|                     { | 
|                         return File.ReadAllText(item).Trim(); | 
|                     } | 
|                 } | 
|                 catch (System.Exception) | 
|                 { | 
|                 } | 
|             } | 
|   | 
|             return conn[conn.Length - 1]; | 
|         } | 
|   | 
|         public static List<MutiDBOperate> MutiInitConn() | 
|         { | 
|             SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig | 
|             { | 
|                 ConfigId = MainDb.CurrentDbConnId, | 
|                 ConnectionString = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB), | 
|                 IsAutoCloseConnection = true, | 
|                 DbType = MainDb.DbType, | 
|                 AopEvents = new AopEvents | 
|                 { | 
|                     OnError = x => | 
|                     { | 
|                         Console.WriteLine(x.Sql); | 
|                     } | 
|                 } | 
|             }); | 
|   | 
|             List<ExpandoObject> list = sqlSugarClient.Queryable(MainDb.TenantTableName, "x").Where(MainDb.TenantStatus, "=", TenantStatus.Enable).Select(TenantUtil.GetTenantSelectModels()).ToList(); | 
|             List<MutiDBOperate> listdatabaseSlaveDB = new List<MutiDBOperate>(); | 
|             MutiDBOperate mainDb = new MutiDBOperate() | 
|             { | 
|                 Connection = AppSettings.Get(MainDb.ConnectionString).DecryptDES(AppSecret.DB), | 
|                 ConnId = MainDb.CurrentDbConnId, | 
|                 DbType = DataBaseType.SqlServer | 
|             }; | 
|             listdatabaseSlaveDB.Add(mainDb); | 
|             for (int i = 0; i < list.Count; i++) | 
|             { | 
|                 dynamic data = list[i]; | 
|                 MutiDBOperate mutiDBOperate = new MutiDBOperate() | 
|                 { | 
|                     Connection = data.ConnectionString, | 
|                     ConnId = data.TenantId + "", | 
|                     DbType = (DataBaseType)data.DbType, | 
|                 }; | 
|                 mutiDBOperate.Connection = mutiDBOperate.Connection.DecryptDES(AppSecret.DB); | 
|                 listdatabaseSlaveDB.Add(mutiDBOperate); | 
|             } | 
|   | 
|             return listdatabaseSlaveDB; | 
|         } | 
|     } | 
|   | 
|     public enum DataBaseType | 
|     { | 
|         MySql = 0, | 
|         SqlServer = 1, | 
|         Sqlite = 2, | 
|         Oracle = 3, | 
|         PostgreSQL = 4, | 
|         Dm = 5, | 
|         Kdbndp = 6, | 
|     } | 
|   | 
|     public class MutiDBOperate | 
|     { | 
|         /// <summary> | 
|         /// 连接启用开关 | 
|         /// </summary> | 
|         public bool Enabled { get; set; } | 
|   | 
|         /// <summary> | 
|         /// 连接ID | 
|         /// </summary> | 
|         public string ConnId { get; set; } | 
|   | 
|         /// <summary> | 
|         /// 从库执行级别,越大越先执行 | 
|         /// </summary> | 
|         public int HitRate { get; set; } | 
|   | 
|         /// <summary> | 
|         /// 连接字符串 | 
|         /// </summary> | 
|         public string Connection { get; set; } | 
|   | 
|         /// <summary> | 
|         /// 数据库类型 | 
|         /// </summary> | 
|         public DataBaseType DbType { get; set; } | 
|     } | 
| } |