internal void BeginTransaction(IsolationLevel isolationLevel) { _transactionDepth++; if (SupportsNestedTransactions) { if (CSConfig.UseTransactionScope) { #if !MONOTOUCH _currentTransactionScope = new TransactionScope(); _transactionScopeStack.Push(_currentTransactionScope); #endif } else { _currentTransaction = Connection.BeginTransaction(isolationLevel); _transactionStack.Push(_currentTransaction); } _newTransactionStack.Push(true); } else { #if !MONOTOUCH if (CSConfig.UseTransactionScope) { if (_currentTransactionScope != null) { _newTransactionStack.Push(false); } else { _currentTransactionScope = new TransactionScope(); _newTransactionStack.Push(true); } _transactionScopeStack.Push(_currentTransactionScope); } else #endif { if (_currentTransaction != null) { _newTransactionStack.Push(false); } else { _currentTransaction = Connection.BeginTransaction(); _newTransactionStack.Push(true); } _transactionStack.Push(_currentTransaction); } } }
internal void Commit() { bool wasNewTransaction = _newTransactionStack.Pop(); #if !MONOTOUCH if (CSConfig.UseTransactionScope) { TransactionScope transactionScope = _transactionScopeStack.Pop(); if (wasNewTransaction && transactionScope != null) { transactionScope.Complete(); transactionScope.Dispose(); } if (_transactionScopeStack.Count > 0) { _currentTransactionScope = _transactionScopeStack.Peek(); } else { _currentTransactionScope = null; } } else #endif { ICSDbTransaction transaction = _transactionStack.Pop(); if (wasNewTransaction && transaction != null) { transaction.Commit(); } if (_transactionStack.Count > 0) { _currentTransaction = _transactionStack.Peek(); } else { _currentTransaction = null; } } _transactionDepth--; if (_transactionDepth == 0) { CloseConnection(); } }
internal void Rollback() { bool wasNewTransaction = _newTransactionStack.Pop(); if (CSConfig.UseTransactionScope) { TransactionScope transactionScope = _transactionScopeStack.Pop(); if (wasNewTransaction && transactionScope != null) { transactionScope.Dispose(); } if (_transactionScopeStack.Count > 0) _currentTransactionScope = _transactionScopeStack.Peek(); else _currentTransactionScope = null; } else { ICSDbTransaction transaction = _transactionStack.Pop(); if (wasNewTransaction && transaction != null) { transaction.Rollback(); } if (_transactionStack.Count > 0) _currentTransaction = _transactionStack.Peek(); else _currentTransaction = null; } _transactionDepth--; if (_transactionDepth == 0) CloseConnection(); }
internal void BeginTransaction(IsolationLevel isolationLevel) { _transactionDepth++; if (SupportsNestedTransactions) { if (CSConfig.UseTransactionScope) { _currentTransactionScope = new TransactionScope(); _transactionScopeStack.Push(_currentTransactionScope); } else { _currentTransaction = Connection.BeginTransaction(isolationLevel); _transactionStack.Push(_currentTransaction); } _newTransactionStack.Push(true); } else { if (CSConfig.UseTransactionScope) { if (_currentTransactionScope != null) { _newTransactionStack.Push(false); } else { _currentTransactionScope = new TransactionScope(); _newTransactionStack.Push(true); } _transactionScopeStack.Push(_currentTransactionScope); } else { if (_currentTransaction != null) { _newTransactionStack.Push(false); } else { _currentTransaction = Connection.BeginTransaction(); _newTransactionStack.Push(true); } _transactionStack.Push(_currentTransaction); } } }
internal void Commit() { bool wasNewTransaction = _newTransactionStack.Pop(); #if !PCL if (CSConfig.UseTransactionScope) { TransactionScope transactionScope = _transactionScopeStack.Pop(); if (wasNewTransaction && transactionScope != null) { transactionScope.Complete(); transactionScope.Dispose(); } if (_transactionScopeStack.Count > 0) _currentTransactionScope = _transactionScopeStack.Peek(); else _currentTransactionScope = null; } else #endif { ICSDbTransaction transaction = _transactionStack.Pop(); if (wasNewTransaction && transaction != null) { transaction.Commit(); } if (_transactionStack.Count > 0) _currentTransaction = _transactionStack.Peek(); else _currentTransaction = null; } _transactionDepth--; if (_transactionDepth == 0) CloseConnection(); }