BeginTransaction() public method

public BeginTransaction ( )
Beispiel #1
0
 public final function Commit(IConnection $Connection, array $TablesOrderedByPersistingDependency, array $TablesOrderedByDiscardingDependency, Relational\Transaction $Transaction)
 {
     try {
         $Connection->BeginTransaction();
         $GroupedDiscardedPrimaryKeys = $Transaction->GetDiscardedPrimaryKeyGroups();
         foreach ($TablesOrderedByDiscardingDependency as $Table) {
             $TableName = $Table->GetName();
             if (isset($GroupedDiscardedPrimaryKeys[$TableName])) {
                 $this->DeleteRowsByPrimaryKeysQuery($Connection, $Table, $GroupedDiscardedPrimaryKeys[$TableName]);
             }
         }
         foreach ($Transaction->GetDiscardedCriteria() as $Criterion) {
             $this->DeleteWhereQuery($Connection, $Criterion);
         }
         foreach ($Transaction->GetProcedures() as $Procedure) {
             $this->ExecuteUpdate($Connection, $Procedure);
         }
         $GroupedPersistedRows = $Transaction->GetPersistedRowGroups();
         foreach ($TablesOrderedByPersistingDependency as $Table) {
             $TableName = $Table->GetName();
             if (isset($GroupedPersistedRows[$TableName])) {
                 $Transaction->TriggerPrePersistEvent($Table);
                 $this->Persister->PersistRows($Connection, $Table, $GroupedPersistedRows[$TableName]);
                 $Transaction->TriggerPostPersistEvent($Table);
             }
         }
         $Connection->CommitTransaction();
     } catch (\Exception $Exception) {
         $Connection->RollbackTransaction();
         throw $Exception;
     }
 }