コード例 #1
0
ファイル: UnitOfWork.cs プロジェクト: radtek/SqlComPare_Mvvm
        public static UnitOfWork GetCurrentUnitOfWork()
        {
            UnitOfWork result = null;

            UnitOfWorkStack.TryPeek(out result);
            return(result);
        }
コード例 #2
0
ファイル: UnitOfWork.cs プロジェクト: radtek/SqlComPare_Mvvm
        public void Dispose()
        {
            if (!this.isShadow)
            {
                this.list.Clear();
            }
            UnitOfWork currentUnitOfWork = GetCurrentUnitOfWork();

            if (currentUnitOfWork == this)
            {
                UnitOfWorkStack.TryPop(out currentUnitOfWork);
            }
        }
コード例 #3
0
ファイル: UnitOfWork.cs プロジェクト: radtek/SqlComPare_Mvvm
        /// <summary>
        /// 提交事务
        /// </summary>
        public void Complete()
        {
            UnitOfWork currentUnitOfWork = GetCurrentUnitOfWork();

            if (currentUnitOfWork != this)
            {
                throw new Exception("当前提交的事务内还有未完成的其他事务,请先完成内部的事务");
            }
            if ((this.Option == UnitOfWorkOption.RequiresNew) || ((this.Option == UnitOfWorkOption.Required) && !this.isShadow))
            {
                this.Commit();
            }
            UnitOfWorkStack.TryPop(out currentUnitOfWork);
            this.Dispose();
        }
コード例 #4
0
 public UnitOfWork(UnitOfWorkOption option)
 {
     _list     = new List <OperatorInfo>();
     _maplist  = new List <Map>();
     _isShadow = false;
     Option    = option;
     if (Option == UnitOfWorkOption.Required)
     {
         var currentUnitOfWork = GetCurrentUnitOfWork();
         if (currentUnitOfWork == null)
         {
             _list = new List <OperatorInfo>();
         }
         else
         {
             _list     = currentUnitOfWork._list;
             _isShadow = true;
         }
     }
     UnitOfWorkStack.Push(this);
 }
コード例 #5
0
ファイル: UnitOfWork.cs プロジェクト: radtek/SqlComPare_Mvvm
 public UnitOfWork(UnitOfWorkOption option)
 {
     list          = new List <OperatorInfo>();
     Maplist       = new List <Map>();
     this.isShadow = false;
     this.Option   = option;
     if (this.Option == UnitOfWorkOption.Required)
     {
         UnitOfWork currentUnitOfWork = GetCurrentUnitOfWork();
         if (currentUnitOfWork == null)
         {
             this.list = new List <OperatorInfo>();
         }
         else
         {
             this.list     = currentUnitOfWork.list;
             this.isShadow = true;
         }
     }
     UnitOfWorkStack.Push(this);
 }
コード例 #6
0
ファイル: UnitOfWork.cs プロジェクト: radtek/SqlComPare_Mvvm
 public void SetCurrentUnitOfWork(UnitOfWork unitOfWork)
 {
     UnitOfWorkStack.Push(unitOfWork);
 }