Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
                }
            }
        }
Example #5
0
        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();
        }