wanshenmean
4 天以前 64a2aa2301946f777659239247233e47ad1e3076
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
@@ -1,12 +1,7 @@
using Microsoft.Extensions.Logging;
using SqlSugar;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.Helper;
namespace WIDESEAWCS_Core.BaseRepository
@@ -15,13 +10,16 @@
    {
        // 定义日志记录器
        private readonly ILogger<UnitOfWorkManage> _logger;
        // 定义SqlSugarClient
        private readonly ISqlSugarClient _sqlSugarClient;
        // 定义事务计数器
        private int _tranCount { get; set; }
        // 定义事务计数器的只读属性
        public int TranCount => _tranCount;
        // 定义事务栈
        public readonly ConcurrentStack<string> TranStack = new();
@@ -43,7 +41,6 @@
            return _sqlSugarClient as SqlSugarClient;
        }
        // 创建UnitOfWork
        public UnitOfWork CreateUnitOfWork()
        {
@@ -55,7 +52,7 @@
            uow.Db.Open();
            uow.Tenant.BeginTran();
            _logger.LogDebug("UnitOfWork Begin");
            return uow;
        }
@@ -100,7 +97,7 @@
                    }
                    return content;
                }
                catch(Exception ex)
                catch (Exception ex)
                {
                    RollbackTran();
                    return WebResponseContent.Instance.Error(ex.Message);
@@ -135,11 +132,11 @@
            lock (this)
            {
                string result = "";
                var spinner = new SpinWait();
                while (!TranStack.IsEmpty && !TranStack.TryPeek(out result))
                {
                    Thread.Sleep(1);
                    spinner.SpinOnce();
                }
                if (result == method.GetFullName())
                {
@@ -158,9 +155,10 @@
                    }
                    finally
                    {
                        var spinner2 = new SpinWait();
                        while (!TranStack.TryPop(out _))
                        {
                            Thread.Sleep(1);
                            spinner2.SpinOnce();
                        }
                        _tranCount = TranStack.Count;
@@ -185,9 +183,10 @@
            lock (this)
            {
                string result = "";
                var spinner = new SpinWait();
                while (!TranStack.IsEmpty && !TranStack.TryPeek(out result))
                {
                    Thread.Sleep(1);
                    spinner.SpinOnce();
                }
                if (result == method.GetFullName())
@@ -205,4 +204,4 @@
            }
        }
    }
}
}