using System.Data; using SqlSugar; namespace ServiceCenter.SqlSugars { /// /// ORM /// public class SqlSugarHelper { /// /// 数据库连接 /// private static SqlSugarScope? _Db { get; set; } = null; /// /// 默认数据库连接Key /// private static string _Default { get; set; } = ""; /// /// PLC据库连接Key /// private static string _PLC { get; set; } = ""; /// /// Dlog数据库连接Key /// private static string _Dlog { get; set; } = ""; /// /// 设置数据库连接Key /// /// 默认多租户ID public static void SetDefault(string configId) { _Default = configId; } /// /// 设置 Dlog数据库连接Key /// /// 多租户Dlog ID public static void SetDlog(string configId) { _Dlog = configId; } /// /// 设置 plc数据库连接Key /// /// 多租户Dlog ID public static void SetPLC(string configId) { _PLC = configId; } /// /// 默认数据库连接Key /// public SqlSugarScopeProvider Default { get { if (_Default == "") throw new Exception("请调用[SqlSugarHelper.SetDefault]方法设置默认数据库连接"); if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接"); return _Db.GetConnectionScope(_Default); } } /// /// Dlog数据库连接Key /// public SqlSugarScopeProvider Dlog { get { if (_Dlog == "") throw new Exception("请调用[SqlSugarHelper.SetDlog]方法设置默认数据库连接"); if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接"); return _Db.GetConnectionScope(_Dlog); } } /// /// plc数据库连接Key /// public SqlSugarScopeProvider PLC { get { if (_PLC == "") throw new Exception("请调用[SqlSugarHelper.SetPLC]方法设置默认数据库连接"); if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接"); return _Db.GetConnectionScope(_PLC); } } /// /// 设置数据库连接 /// /// public static void SetDb(SqlSugarScope sqlSugarScope) { _Db = sqlSugarScope; } /// /// 数据库连接 /// 注意需要 /// public SqlSugarScope Connect { get { return _Db ?? throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接"); } } /// /// 执行事务 /// /// /// public static void Do(Action act) { if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接"); var db = new SqlSugarHelper(); try { db.Connect.BeginTran(IsolationLevel.ReadCommitted);//开始事务 if (_Default != "") { db.Default.Ado.CommandTimeOut = 2; } act(db);//执行委托 db.Connect.CommitTran();//提交事务 } catch (Exception ex) { db.Connect.RollbackTran();//回滚事务 throw new Exception(ex.Message); } } /// /// 直接返回查询结果 /// /// /// /// /// public static T Do(Func act) { if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接"); var db = new SqlSugarHelper(); try { db.Connect.BeginTran();//开始事务 db.Connect.Ado.CommandTimeOut = 2; var res = act(db);//执行委托 db.Connect.CommitTran();//提交事务 return res; } catch (Exception ex) { db.Connect.RollbackTran();//回滚事务 throw new Exception(ex.Message); } } } }