Esempio n. 1
0
        /// <summary>回滚事务,忽略异常</summary>
        /// <returns>剩下的事务计数</returns>
        public virtual Int32 Rollback()
        {
            //TransCount = Dal.Rollback();
            //// 回滚的时候貌似不需要更新缓存
            ////if (TransCount <= 0 && executeCount > 0) DataChange();
            //if (TransCount <= 0 && executeCount > 0)
            //{
            //    // 因为在事务保护中添加或删除实体时直接操作了实体缓存,所以需要更新
            //    DataChange("修改数据后回滚事务");
            //    executeCount = 0;
            //}
            //return TransCount;
            if (_ExecuteCount > 0)
            {
                Dal.AddDirtiedEntitySession(Key, this, _ExecuteCount, _UpdateCount, _DirectExecuteSQLCount);

                //// 因为在事务保护中添加或删除实体时直接操作了实体缓存,所以需要更新
                //DataChange("修改数据后回滚事务", _DirectExecuteSQLCount > 0, _UpdateCount > 0, true);
                _ExecuteCount          = 0;
                _UpdateCount           = 0;
                _DirectExecuteSQLCount = 0;
            }
            _TransCount = Dal.Rollback();
            return(_TransCount);
        }
Esempio n. 2
0
        /// <summary>提交事务</summary>
        /// <returns>剩下的事务计数</returns>
        public virtual Int32 Commit()
        {
            //TransCount = Dal.Commit();
            //// 提交事务时更新数据,虽然不是绝对准确,但没有更好的办法
            //// 即使提交了事务,但只要事务内没有执行更新数据的操作,也不更新
            //// 2012-06-13 测试证明,修改数据后,提交事务后会更新缓存等数据
            //if (TransCount <= 0 && executeCount > 0)
            //{
            //    DataChange("修改数据后提交事务");
            //    // 回滚到顶层才更新数据
            //    executeCount = 0;
            //}
            //return TransCount;
            if (_ExecuteCount > 0)
            {
                Dal.AddDirtiedEntitySession(Key, this, _ExecuteCount, _UpdateCount, _DirectExecuteSQLCount);

                _ExecuteCount          = 0;
                _UpdateCount           = 0;
                _DirectExecuteSQLCount = 0;
            }
            _TransCount = Dal.Commit();
            return(_TransCount);
        }