| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | using Microsoft.Data.SqlClient;using Newtonsoft.Json.Linq;using SqlSugar;using System.Data;namespace ServiceCenter.SqlSugars{    /// <summary>    ///  ORM    /// </summary>    public class SqlSugarHelper    {        /// <summary>        /// 数据库连接        /// </summary>        private static SqlSugarScope? _Db { get; set; } = null;        /// <summary>        /// 默认数据库连接Key        /// </summary>        private static string _Default { get; set; } = "";        /// <summary>        /// PLC据库连接Key        /// </summary>        private static string _PLCEX { get; set; } = "";        /// <summary>        /// PLC据库连接Key        /// </summary>        private static string _PLC { get; set; } = "";        /// <summary>        /// Dlog数据库连接Key        /// </summary>        private static string _Dlog { get; set; } = "";        /// <summary>        ///  设置数据库连接Key        /// </summary>        /// <param name="configId">默认多租户ID</param>        public static void SetDefault(string configId)        {            _Default = configId;        }        /// <summary>        ///  设置 Dlog数据库连接Key        /// </summary>        /// <param name="configId">多租户Dlog ID</param>        public static void SetDlog(string configId)        {            _Dlog = configId;        }        /// <summary>        ///  设置 plc数据库连接Key        /// </summary>        /// <param name="configId">多租户Dlog ID</param>        public static void SetPLC(string configId)        {            _PLC = configId;        }        /// <summary>        ///  设置 plc数据库连接Key        /// </summary>        /// <param name="configId">多租户Dlog ID</param>        public static void SetPLCEX(string configId)        {            _PLCEX = configId;        }        /// <summary>        /// 默认数据库连接Key        /// </summary>        public SqlSugarScopeProvider Default        {            get            {                if (_Default == "") throw new Exception("请调用[SqlSugarHelper.SetDefault]方法设置默认数据库连接");                if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");                return _Db.GetConnectionScope(_Default);            }        }        /// <summary>        /// Dlog数据库连接Key        /// </summary>        public SqlSugarScopeProvider Dlog        {            get            {                if (_Dlog == "") throw new Exception("请调用[SqlSugarHelper.SetDlog]方法设置默认数据库连接");                if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");                return _Db.GetConnectionScope(_Dlog);            }        }        /// <summary>        /// plc数据库连接Key        /// </summary>        public SqlSugarScopeProvider PLC        {            get            {                if (_PLC == "") throw new Exception("请调用[SqlSugarHelper.SetPLC]方法设置默认数据库连接");                if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");                return _Db.GetConnectionScope(_PLC);            }        }        /// <summary>        /// plc数据库连接Key        /// </summary>        public SqlSugarScopeProvider PLCEX        {            get            {                if (_PLCEX == "") throw new Exception("请调用[SqlSugarHelper.SetPLC]方法设置默认数据库连接");                if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");                return _Db.GetConnectionScope(_PLCEX);            }        }        /// <summary>        ///  设置数据库连接        /// </summary>        /// <param name="sqlSugarScope"></param>        public static void SetDb(SqlSugarScope sqlSugarScope)        {            _Db = sqlSugarScope;        }        /// <summary>        /// 数据库连接        /// 注意需要        /// </summary>        public SqlSugarScope Connect        {            get            {                return _Db ?? throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");            }        }        /// <summary>        ///  执行事务        /// </summary>        /// <param name="act"></param>        /// <exception cref="Exception"></exception>        public static void Do(Action<SqlSugarHelper> act)        {            if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");            var db = new SqlSugarHelper();            try            {                db.Connect.BeginTran();//开始事务                act(db);//执行委托                db.Connect.CommitTran();//提交事务            }            catch (Exception ex)            {                db.Connect.RollbackTran();//回滚事务                if (ex.Message.Contains("SqlTransaction")) throw new Exception($"{ex.Message}:{ex.StackTrace}");                throw new Exception(ex.Message);            }        }        /// <summary>        ///  直接返回查询结果        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="act"></param>        /// <returns></returns>        /// <exception cref="Exception"></exception>        public static T Do<T>(Func<SqlSugarHelper, T> act)        {            if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");            var db = new SqlSugarHelper();            try            {                db.Connect.BeginTran();//开始事务                db.Connect.Ado.CommandTimeOut = 10;                var res = act(db);//执行委托                db.Connect.CommitTran();//提交事务                return res;            }            catch (Exception ex)            {                db.Connect.RollbackTran();//回滚事务                if (ex.Message.Contains("SqlTransaction")) throw new Exception($"{ex.Message}:{ex.StackTrace}");                throw new Exception(ex.Message);            }        }    }}
 |