private void FailIfTransactionStartedDespiteDisablingIt(TransactionsContainer transactionsContainer, [NotNull] ConnectToAttribute[] disabledTransactions)
        {
            Fail.IfArgumentNull(disabledTransactions, nameof(disabledTransactions));

            foreach (ConnectToAttribute disabledTransaction in disabledTransactions)
            {
                IDatabase database = this.GetDatabaseForAutoTransaction(disabledTransaction);
                ISession  session  = transactionsContainer.StartSession(database);
                Fail.IfTrue(
                    session.Transaction.IsActive,
                    "Transaction is started to database {0} and it shouldn't be due to attribute {1}",
                    database,
                    disabledTransaction);
            }
        }
Ejemplo n.º 2
0
        private TransactionsContainer AutostartTransactions([NotNull] ConnectToAttribute[] enabledTransactions)
        {
            Fail.IfArgumentNull(enabledTransactions, nameof(enabledTransactions));

            var container = new TransactionsContainer();

            foreach (ConnectToAttribute transactionalAttribute in enabledTransactions)
            {
                IDatabase      database       = this.GetDatabaseForAutoTransaction(transactionalAttribute);
                IsolationLevel isolationLevel = transactionalAttribute.IsolationLevel;

                container.StartTransaction(database, isolationLevel);
            }

            return(container);
        }
Ejemplo n.º 3
0
        /// <inheritdoc />
        public TransactionsContainer StartTransactionsFor(MethodInfo method)
        {
            Fail.IfArgumentNull(method, nameof(method));

            List <ConnectToAttribute> transactionAttributes = TransactionCoordinator.GetAutoTransactionAttributesFor(method);

            // Remove all the attributes with disabled transaction
            var enabledTransactions = transactionAttributes.Where(t => t.Transactional).ToArray();
            TransactionsContainer transactionsContainer = this.AutostartTransactions(enabledTransactions);

            var disabledTransactions = transactionAttributes.Where(t => t.Transactional = false).ToArray();

            this.FailIfTransactionStartedDespiteDisablingIt(transactionsContainer, disabledTransactions);

            return(transactionsContainer);
        }