protected void OnBeforeTrans(InfoTransactionBeforeTransEventArgs value) { InfoTransactionBeforeTransEventHandler handler = (InfoTransactionBeforeTransEventHandler)Events[EventBeforeTrans]; if ((handler != null) && (value is InfoTransactionBeforeTransEventArgs)) { handler(this, (InfoTransactionBeforeTransEventArgs)value); } }
public Boolean Update(DataRow srcRow, DataTable srcSchema, String writeBackWherePart, IDbConnection connection, List<string> sqlSentences, IDbTransaction dbTrans) { Boolean b = true; //Boolean isTrans = false; //if (srcRow.RowState == DataRowState.Added) //{ // foreach (TimingType t in _timing) // { // if (t == TimingType.OnInsert) // { isTrans = true; break; } // } //} //if (srcRow.RowState == DataRowState.Deleted) //{ // foreach (TimingType t in _timing) // { // if (t == TimingType.OnDelete) // { isTrans = true; break; } // } //} //if (srcRow.RowState == DataRowState.Modified) //{ // foreach (TimingType t in _timing) // { // if (t == TimingType.OnUpdate) // { isTrans = true; break; } // } //} //if (isTrans == false) //{ return b; } // order. // Transactions.Sort(GetTransStepComparsion()); Boolean c = false; Boolean d = false; foreach (Transaction t in _transactions) { if (srcRow.RowState == DataRowState.Added && t.WhenInsert == false) continue; if (srcRow.RowState == DataRowState.Modified && t.WhenUpdate == false) continue; if (srcRow.RowState == DataRowState.Deleted && t.WhenDelete == false) continue; InfoTransactionBeforeTransEventArgs args = new InfoTransactionBeforeTransEventArgs(t); OnBeforeTrans(args); if (args.Abort) { continue; } TransSQLBuilder transSQLBuilder = new TransSQLBuilder(t, srcRow, srcSchema, writeBackWherePart); List<String> transSQLs = transSQLBuilder.GetTransSQL(connection, dbTrans); if (transSQLs != null && transSQLs.Count != 0) { if (c == false) { c = true; d = true; } foreach (String transSQL in transSQLs) { IDbCommand command = connection.CreateCommand(); command.CommandText = transSQL; if (dbTrans != null) { command.Transaction = dbTrans; if (command.ExecuteNonQuery() == 0) { throw new Exception(); /*b = false; break; */} } else { if (command.ExecuteNonQuery() == 0) { b = false; break; } } } } String writeSQL = null; if (srcRow.RowState != DataRowState.Deleted) { writeSQL = transSQLBuilder.GetWriteBackSQL(connection, dbTrans); } if (!string.IsNullOrEmpty(writeSQL)) { sqlSentences.Add(writeSQL); } if (writeSQL != null && writeSQL.Length != 0) { if (c == false) { //InfoTransactionBeforeTransEventArgs args = new InfoTransactionBeforeTransEventArgs(t); //OnBeforeTrans(args); //if (args.Abort) //{ // continue; //} c = true; d = true; } IDbCommand command = connection.CreateCommand(); command.CommandText = writeSQL; if (dbTrans != null) { command.Transaction = dbTrans; if (command.ExecuteNonQuery() == 0) { throw new Exception(); /*b = false; break; */} } else { if (command.ExecuteNonQuery() == 0) { b = false; break; } } } } if (d == true) { OnAfterTrans(new InfoTransactionAfterTransEventArgs()); } return b; }