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