+ -
当前位置:首页 → 问答吧 → 抛砖引玉,在逻辑层实现事务,请大家指教。

抛砖引玉,在逻辑层实现事务,请大家指教。

时间:2011-12-28

来源:互联网

为什么以前在逻辑层做不了事务,因为我们在使用SqlConnection的时候,都是连接完后,马上就把SqlConnection对象关闭。而事务要求对同一个SqlConnection对象上实施,所以就做不了事务了。
 解决办法就是想办法告诉数据库操作类,我用了事务,不要闭连接,并把当前连接保存下来,下一次继续使用。


作者: X2670316290   发布时间: 2011-12-28

  我写了一个事务容器类
      /**/
        ///   <summary>
        ///   TransactionScope   包装类
        ///   </summary>
        public   sealed   class   TransactionScopeA   :   IDisposable
        {
          private   TransactionScope   m_TransactionScope   =   null;
   

        private   SqlConnection   _connection   =   null;
        public   SqlConnection   GetConnection
        {
                set   {   _connection   =   value;   }
                get   {   return   _connection;   }
        }
     
        /**////   <summary>
        ///   实例化一个新的   TransactionScope
        ///   </summary>
        ///   <param   name= "dac "> </param>
        public   TransactionScopeA()
        {
                this.m_TransactionScope   =   new   TransactionScope();
        }

        ///   <summary>
        ///   关闭连接
        ///   </summary>
        public   void   Close()
        {
                _connection.Close();
                _connection.Dispose();
                _connection   =   null;
               
        }

        public     void   Complete()
        {
                this.m_TransactionScope.Complete();
                this.Close();        
                this.GetConnection   =   null;
        }
        #region   IDisposable   成员
        /**/
        ///   <summary>
        ///   当执行该方法的时候完成两件任务
        ///   1   关闭数据库连接
        ///   2   调用   TransactionScope   的   Dispose()方法
        ///   </summary>
        void   IDisposable.Dispose()
        {
                try
                {
                        Close();
                }
                finally
                {
                        m_TransactionScope.Dispose();
                }
        }
        #endregion
        }

作者: X2670316290   发布时间: 2011-12-28