|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|