| using SqlSugar; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
| using WIDESEA_Core.Const; | 
| using WIDESEA_Core.DB; | 
| using WIDESEA_Core.Helper; | 
|   | 
| namespace WIDESEA_Core.Seed | 
| { | 
|     public class DBContext | 
|     { | 
|         private static MutiDBOperate connectObject => GetMainConnectionDb(); | 
|         private static string _connectionString = connectObject.Connection; | 
|         private static DbType _dbType = (DbType)connectObject.DbType; | 
|         public static string ConnId = connectObject.ConnId; | 
|         private SqlSugarClient _db; | 
|   | 
|         /// <summary> | 
|         /// 连接字符串  | 
|         /// </summary> | 
|         public static MutiDBOperate GetMainConnectionDb() | 
|         { | 
|             MutiDBOperate mainDb = new MutiDBOperate() | 
|             { | 
|                 //Connection = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB), | 
|                 Connection = AppSettings.app(MainDb.ConnectionString), | 
|                 ConnId = MainDb.CurrentDbConnId, | 
|                 DbType = DataBaseType.SqlServer | 
|             }; | 
|   | 
|             return mainDb; | 
|         } | 
|         /// <summary> | 
|         /// 连接字符串  | 
|         /// </summary> | 
|         public static string ConnectionString | 
|         { | 
|             get { return _connectionString; } | 
|             set { _connectionString = value; } | 
|         } | 
|         /// <summary> | 
|         /// 数据库类型  | 
|         /// </summary> | 
|         public static DbType DbType | 
|         { | 
|             get { return _dbType; } | 
|             set { _dbType = value; } | 
|         } | 
|         /// <summary> | 
|         /// 数据连接对象  | 
|         /// </summary> | 
|         public SqlSugarClient Db | 
|         { | 
|             get { return _db; } | 
|             private set { _db = value; } | 
|         } | 
|   | 
|         //public SqlSugarScope DbClient | 
|         //{ | 
|         //    get { return _dbClient; } | 
|         //    private set { _dbClient = value; } | 
|         //} | 
|   | 
|         /// <summary> | 
|         /// 功能描述:构造函数 | 
|         /// </summary> | 
|         public DBContext(ISqlSugarClient sqlSugarClient) | 
|         { | 
|             if (string.IsNullOrEmpty(_connectionString)) | 
|                 throw new ArgumentNullException("数据库连接字符串为空"); | 
|   | 
|             _db = sqlSugarClient as SqlSugarClient; | 
|             //_db.Aop.DataExecuting = SqlSugarAop.DataExecuting; | 
|         } | 
|   | 
|         #region 实例方法 | 
|         /// <summary> | 
|         /// 功能描述:获取数据库处理对象 | 
|         /// </summary> | 
|         /// <returns>返回值</returns> | 
|         public SimpleClient<T> GetEntityDB<T>() where T : class, new() | 
|         { | 
|             return new SimpleClient<T>(_db); | 
|         } | 
|         /// <summary> | 
|         /// 功能描述:获取数据库处理对象 | 
|         /// </summary> | 
|         /// <param name="db">db</param> | 
|         /// <returns>返回值</returns> | 
|         //public SimpleClient<T> GetEntityDB<T>(SqlSugarClient db) where T : class, new() | 
|         //{ | 
|         //    return new SimpleClient<T>(db); | 
|         //} | 
|   | 
|   | 
|   | 
|         #endregion | 
|   | 
|   | 
|         #region 根据实体类生成数据库表 | 
|         /// <summary> | 
|         /// 功能描述:根据实体类生成数据库表 | 
|         /// </summary> | 
|         /// <param name="blnBackupTable">是否备份表</param> | 
|         /// <param name="lstEntitys">指定的实体</param> | 
|         public void CreateTableByEntity<T>(bool blnBackupTable, params T[] lstEntitys) where T : class, new() | 
|         { | 
|             Type[] lstTypes = null; | 
|             if (lstEntitys != null) | 
|             { | 
|                 lstTypes = new Type[lstEntitys.Length]; | 
|                 for (int i = 0; i < lstEntitys.Length; i++) | 
|                 { | 
|                     T t = lstEntitys[i]; | 
|                     lstTypes[i] = typeof(T); | 
|                 } | 
|             } | 
|             CreateTableByEntity(blnBackupTable, lstTypes); | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 功能描述:根据实体类生成数据库表 | 
|         /// </summary> | 
|         /// <param name="blnBackupTable">是否备份表</param> | 
|         /// <param name="lstEntitys">指定的实体</param> | 
|         public void CreateTableByEntity(bool blnBackupTable, params Type[] lstEntitys) | 
|         { | 
|             if (blnBackupTable) | 
|             { | 
|                 _db.CodeFirst.BackupTable().InitTables(lstEntitys); //change entity backupTable             | 
|             } | 
|             else | 
|             { | 
|                 _db.CodeFirst.InitTables(lstEntitys); | 
|             } | 
|         } | 
|         #endregion | 
|   | 
|   | 
|         #region 静态方法 | 
|   | 
|         ///// <summary> | 
|         ///// 功能描述:获得一个DbContext | 
|         ///// </summary> | 
|         ///// <returns></returns> | 
|         //public static MyContext GetDbContext() | 
|         //{ | 
|         //    return new MyContext(); | 
|         //} | 
|   | 
|         /// <summary> | 
|         /// 功能描述:设置初始化参数 | 
|         /// </summary> | 
|         /// <param name="strConnectionString">连接字符串</param> | 
|         /// <param name="enmDbType">数据库类型</param> | 
|         public static void Init(string strConnectionString, DbType enmDbType = SqlSugar.DbType.SqlServer) | 
|         { | 
|             _connectionString = strConnectionString; | 
|             _dbType = enmDbType; | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 功能描述:创建一个链接配置 | 
|         /// </summary> | 
|         /// <param name="blnIsAutoCloseConnection">是否自动关闭连接</param> | 
|         /// <param name="blnIsShardSameThread">是否夸类事务</param> | 
|         /// <returns>ConnectionConfig</returns> | 
|         public static ConnectionConfig GetConnectionConfig(bool blnIsAutoCloseConnection = true, bool blnIsShardSameThread = false) | 
|         { | 
|             ConnectionConfig config = new ConnectionConfig() | 
|             { | 
|                 ConnectionString = _connectionString, | 
|                 DbType = _dbType, | 
|                 IsAutoCloseConnection = blnIsAutoCloseConnection, | 
|                 ConfigureExternalServices = new ConfigureExternalServices() | 
|                 { | 
|                     //DataInfoCacheService = new HttpRuntimeCache() | 
|                 }, | 
|                 //IsShardSameThread = blnIsShardSameThread | 
|             }; | 
|             return config; | 
|         } | 
|   | 
|         /// <summary> | 
|         /// 功能描述:获取一个自定义的DB | 
|         /// </summary> | 
|         /// <param name="config">config</param> | 
|         /// <returns>返回值</returns> | 
|         public static SqlSugarClient GetCustomDB(ConnectionConfig config) | 
|         { | 
|             return new SqlSugarClient(config); | 
|         } | 
|         /// <summary> | 
|         /// 功能描述:获取一个自定义的数据库处理对象 | 
|         /// </summary> | 
|         /// <param name="sugarClient">sugarClient</param> | 
|         /// <returns>返回值</returns> | 
|         public static SimpleClient<T> GetCustomEntityDB<T>(SqlSugarClient sugarClient) where T : class, new() | 
|         { | 
|             return new SimpleClient<T>(sugarClient); | 
|         } | 
|         /// <summary> | 
|         /// 功能描述:获取一个自定义的数据库处理对象 | 
|         /// </summary> | 
|         /// <param name="config">config</param> | 
|         /// <returns>返回值</returns> | 
|         public static SimpleClient<T> GetCustomEntityDB<T>(ConnectionConfig config) where T : class, new() | 
|         { | 
|             SqlSugarClient sugarClient = GetCustomDB(config); | 
|             return GetCustomEntityDB<T>(sugarClient); | 
|         } | 
|         #endregion | 
|     } | 
| } |