private static void ProcessDbProvider(ParameterUtil sup, ProcessFunDelegate fun, DbType dbType, bool inTransaction) { using (IDbProvider dbProvider = DbFactoryProvider.GetProvider(GetDbType(dbType))) { try { dbProvider.Open(GetDbConnection(dbType)); if (inTransaction) { dbProvider.BeginTransaction(); } fun(dbProvider); AddLog(dbProvider, sup); if (inTransaction) { dbProvider.CommitTransaction(); } } catch (Exception ex) { if (inTransaction) { dbProvider.RollbackTransaction(); } CiExceptionManager.LogException(dbProvider, sup.UserInfo, ex); throw; } finally { dbProvider.Close(); } } }
public void SaveChanges() { SqlTransaction transactionResult = _ormProvider.BeginTransaction(); try { _ormProvider.CommitTransaction(transactionResult); } catch (Exception) { _ormProvider.RollbackTransaction(transactionResult); } }
/// <summary> /// 批量删除数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="ids">主键数组</param> /// <returns>影响行数</returns> public int BatchDelete(UserInfo userInfo, string[] ids) { int returnValue = 0; using (IDbProvider rdiDbProvider = DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbType)) { try { rdiDbProvider.Open(RDIFrameworkDbConection); LogManager.Instance.Add(rdiDbProvider, userInfo, this.serviceName, "批量删除数据", MethodBase.GetCurrentMethod()); using (IDbProvider dbProvider = DbFactoryProvider.GetProvider(BusinessDbType)) { try { dbProvider.Open(BusinessDbConnection); // 开始事务 dbProvider.BeginTransaction(); LinkManManager manager = new LinkManManager(dbProvider, userInfo); returnValue = manager.Delete(ids); // 提交事务 dbProvider.CommitTransaction(); } catch (Exception ex) { // 回滚事务 dbProvider.RollbackTransaction(); CiExceptionManager.LogException(rdiDbProvider, userInfo, ex); throw ex; } finally { dbProvider.Close(); } } } catch (Exception ex) { CiExceptionManager.LogException(rdiDbProvider, userInfo, ex); throw ex; } finally { rdiDbProvider.Close(); } } return(returnValue); }
//事务测试 private void toolStripButton2_Click(object sender, EventArgs e) { dbProvider.Open(); dbProvider.BeginTransaction(); try { string sql = "insert into test1(Id,Col1,Col2,Col3) values('" + BusinessLogic.NewGuid() + "','abcd',2,'kk')"; int value1 = dbProvider.ExecuteNonQuery(sql); //sql = "insert into test2(Id,Col1,Col2) values('" + BusinessLogic.NewGuid() + "','4','kk')"; sql = "insert into test2(Id,Col2) values('" + BusinessLogic.NewGuid() + "','kk')"; int value2 = dbProvider.ExecuteNonQuery(sql); //插入失败,则第一条语句也失败。 dbProvider.CommitTransaction(); } catch (Exception ex) { dbProvider.RollbackTransaction(); MessageBoxHelper.ShowErrorMsg(ex.Message); } finally { dbProvider.Close(); } }
public void CompleteTransaction() { _idbProvider.CommitTransaction(); }
public override Task CommitTransaction() => Provider.CommitTransaction();