using SqlSugar; using System; namespace Admin.Core.Common { public class MyContext { 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> /// 连接字符串 /// Admin.Core /// </summary> public static MutiDBOperate GetMainConnectionDb() { var mainConnetctDb = BaseDBConfig.MutiConnectionString.allDbs.Find(x => x.ConnId == MainDb.CurrentDbConnId); if (BaseDBConfig.MutiConnectionString.allDbs.Count > 0) { if (mainConnetctDb == null) { mainConnetctDb = BaseDBConfig.MutiConnectionString.allDbs[0]; } } else { throw new Exception("请确保appsettigns.json中配置连接字符串,并设置Enabled为true;"); } return mainConnetctDb; } /// <summary> /// 连接字符串 /// Admin.Core /// </summary> public static string ConnectionString { get { return _connectionString; } set { _connectionString = value; } } /// <summary> /// 数据库类型 /// Admin.Core /// </summary> public static DbType DbType { get { return _dbType; } set { _dbType = value; } } /// <summary> /// 数据连接对象 /// Admin.Core /// </summary> public SqlSugarClient Db { get { return _db; } private set { _db = value; } } /// <summary> /// 功能描述:构造函数 /// 作 者:Admin.Core /// </summary> public MyContext(ISqlSugarClient sqlSugarClient) { if (string.IsNullOrEmpty(_connectionString)) throw new ArgumentNullException("数据库连接字符串为空"); _db = sqlSugarClient as SqlSugarClient; } #region 实例方法 /// <summary> /// 功能描述:获取数据库处理对象 /// 作 者:Admin.Core /// </summary> /// <returns>返回值</returns> public SimpleClient<T> GetEntityDB<T>() where T : class, new() { return new SimpleClient<T>(_db); } /// <summary> /// 功能描述:获取数据库处理对象 /// 作 者:Admin.Core /// </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> /// 功能描述:根据实体类生成数据库表 /// 作 者:Admin.Core /// </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> /// 功能描述:根据实体类生成数据库表 /// 作 者:Admin.Core /// </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 ///// 作 者:Admin.Core ///// </summary> ///// <returns></returns> //public static MyContext GetDbContext() //{ // return new MyContext(); //} /// <summary> /// 功能描述:设置初始化参数 /// 作 者:Admin.Core /// </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> /// 功能描述:创建一个链接配置 /// 作 者:Admin.Core /// </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() } }; return config; } /// <summary> /// 功能描述:获取一个自定义的DB /// 作 者:Admin.Core /// </summary> /// <param name="config">config</param> /// <returns>返回值</returns> public static SqlSugarClient GetCustomDB(ConnectionConfig config) { return new SqlSugarClient(config); } /// <summary> /// 功能描述:获取一个自定义的数据库处理对象 /// 作 者:Admin.Core /// </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> /// 功能描述:获取一个自定义的数据库处理对象 /// 作 者:Admin.Core /// </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 } }