protected override Common.DbTransaction BeginDbTransaction(IsolationLevel isolationLevel)
        {
            if (state == ConnectionState.Closed)
            {
                throw new InvalidOperationException("The connection is not open.");
            }
            if (transaction != null)
            {
                throw new InvalidOperationException("OracleConnection does not support parallel transactions.");
            }

            OciTransactionHandle transactionHandle = oci.CreateTransaction();

            if (transactionHandle == null)
            {
                throw new Exception("Error: Unable to start transaction");
            }
            else
            {
                transactionHandle.Begin();
                transaction = new OracleTransaction(this, isolationLevel, transactionHandle);
            }

            return(transaction);
        }
Пример #2
0
 internal OracleTransaction(OracleConnection connection, IsolationLevel isolevel, OciTransactionHandle transaction)
 {
     this.connection     = connection;
     this.isolationLevel = isolevel;
     this.transaction    = transaction;
     isOpen = true;
 }
Пример #3
0
        public OciTransactionHandle CreateTransaction()
        {
            OciTransactionHandle transaction = (OciTransactionHandle)environment.Allocate(OciHandleType.Transaction);

            if (transaction == null)
            {
                OciErrorInfo info = environment.HandleError();
                throw new OracleException(info.ErrorCode, info.ErrorMessage);
            }
            transaction.ErrorHandle = error;
            transaction.Service     = service;

            return(transaction);
        }