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>
- public 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);
- }
- }
- }
- }
|