internal static void AddTransaction( TransactionKey tk, DbTransaction dt ) { CleanUpStaleTransactions(); if ( dt.Connection.State != System.Data.ConnectionState.Closed || dt.Connection.State != System.Data.ConnectionState.Broken ) { if ( !Instance.Stack.ContainsKey( tk ) ) { tk.Connection = dt.Connection; dt.Connection.StateChange += new System.Data.StateChangeEventHandler( Connection_StateChange ); dt.Connection.Disposed += new EventHandler( Connection_Disposed ); Instance.Stack.Add( tk, dt ); } } else { throw new PersistenceException( String.Format( System.Globalization.CultureInfo.InvariantCulture, "Connection is currently unusable; Transaction was not added. Connection.State was: {0}", dt.Connection.State.ToString() ) ); } }
internal static TransactionKey Generate( DbConnection connection ) { TransactionKey tk = new TransactionKey( TransactionKeyType.Internal ); tk.Connection = connection; TransactionManager.AddTransaction( tk, connection.BeginTransaction( IsolationLevel.Serializable ) ); return ( tk ); }
internal DbTransaction this[TransactionKey key] { get { return ( Instance.Stack[ key ] ); } }
internal static void RollbackTransaction( TransactionKey tk ) { Instance[tk].Rollback(); tk.Status = TransactionStatus.RolledBack; }
internal static void RemoveTransaction( TransactionKey tk ) { if ( Instance.Stack.ContainsKey( tk ) ) Instance.Stack.Remove( tk ); }
internal static bool ContainsTransactionKey( TransactionKey tk ) { return ( Instance.Stack.ContainsKey( tk ) ); }
internal static void CommitTransaction( TransactionKey tk ) { Instance[tk].Commit(); tk.Status = TransactionStatus.Commited; }