using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.Const; using WIDESEAWCS_Core.DB; using WIDESEAWCS_Core.Helper; namespace WIDESEAWCS_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 SqlSugarScope _db; /// /// 连接字符串 /// public static MutiDBOperate GetMainConnectionDb() { MutiDBOperate mainDb = new MutiDBOperate() { Connection = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB), ConnId = MainDb.CurrentDbConnId, DbType = DataBaseType.SqlServer }; return mainDb; } /// /// 连接字符串 /// public static string ConnectionString { get { return _connectionString; } set { _connectionString = value; } } /// /// 数据库类型 /// public static DbType DbType { get { return _dbType; } set { _dbType = value; } } /// /// 数据连接对象 /// public SqlSugarScope Db { get { return _db; } private set { _db = value; } } //public SqlSugarScope DbClient //{ // get { return _dbClient; } // private set { _dbClient = value; } //} /// /// 功能描述:构造函数 /// public DBContext(ISqlSugarClient sqlSugarClient) { if (string.IsNullOrEmpty(_connectionString)) throw new ArgumentNullException("数据库连接字符串为空"); _db = sqlSugarClient as SqlSugarScope; //_db.Aop.DataExecuting = SqlSugarAop.DataExecuting; } #region 实例方法 /// /// 功能描述:获取数据库处理对象 /// /// 返回值 public SimpleClient GetEntityDB() where T : class, new() { return new SimpleClient(_db); } /// /// 功能描述:获取数据库处理对象 /// /// db /// 返回值 //public SimpleClient GetEntityDB(SqlSugarClient db) where T : class, new() //{ // return new SimpleClient(db); //} #endregion #region 根据实体类生成数据库表 /// /// 功能描述:根据实体类生成数据库表 /// /// 是否备份表 /// 指定的实体 public void CreateTableByEntity(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); } /// /// 功能描述:根据实体类生成数据库表 /// /// 是否备份表 /// 指定的实体 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 静态方法 ///// ///// 功能描述:获得一个DbContext ///// ///// //public static MyContext GetDbContext() //{ // return new MyContext(); //} /// /// 功能描述:设置初始化参数 /// /// 连接字符串 /// 数据库类型 public static void Init(string strConnectionString, DbType enmDbType = SqlSugar.DbType.SqlServer) { _connectionString = strConnectionString; _dbType = enmDbType; } /// /// 功能描述:创建一个链接配置 /// /// 是否自动关闭连接 /// 是否夸类事务 /// ConnectionConfig 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; } /// /// 功能描述:获取一个自定义的DB /// /// config /// 返回值 public static SqlSugarScope GetCustomDB(ConnectionConfig config) { return new SqlSugarScope(config); } /// /// 功能描述:获取一个自定义的数据库处理对象 /// /// sugarClient /// 返回值 //public static SqlSugarScope GetCustomEntityDB(SqlSugarScope sugarClient) where T : class, new() //{ // return new SqlSugarScope(sugarClient); //} /// /// 功能描述:获取一个自定义的数据库处理对象 /// /// config /// 返回值 //public static SimpleClient GetCustomEntityDB(ConnectionConfig config) where T : class, new() //{ // SqlSugarScope sugarClient = GetCustomDB(config); // return GetCustomEntityDB(sugarClient); //} #endregion } }