示例#1
0
        public ChildTransactionExecutionListener(ChildTransactionStrategy transactionStrategy, IWxeFunctionExecutionListener innerListener)
        {
            ArgumentUtility.CheckNotNull("transactionStrategy", transactionStrategy);
            ArgumentUtility.CheckNotNull("innerListener", innerListener);

            _transactionStrategy = transactionStrategy;
            _innerListener       = innerListener;
        }
        public override sealed TransactionStrategyBase CreateChildTransactionStrategy(bool autoCommit, IWxeFunctionExecutionContext executionContext, WxeContext wxeContext)
        {
            ArgumentUtility.CheckNotNull("executionContext", executionContext);
            ArgumentUtility.CheckNotNull("wxeContext", wxeContext);

            if (!_child.IsNull)
            {
                throw new InvalidOperationException(
                          "The transaction strategy already has an active child transaction strategy. "
                          + "This child transaction strategy must first be unregistered before invoking CreateChildTransactionStrategy again.");
            }

            var childTransactionStrategy = new ChildTransactionStrategy(autoCommit, this, Transaction, executionContext);

            _child = childTransactionStrategy;
            if (_scope != null)
            {
                _child.OnExecutionPlay(wxeContext, NullExecutionListener.Null);
            }

            return(childTransactionStrategy);
        }