protected ScopedTransactionStrategyBase( bool autoCommit, Func <ITransaction> transactionFactory, TransactionStrategyBase outerTransactionStrategy, IWxeFunctionExecutionContext executionContext) { ArgumentUtility.CheckNotNull("transactionFactory", transactionFactory); ArgumentUtility.CheckNotNull("outerTransactionStrategy", outerTransactionStrategy); ArgumentUtility.CheckNotNull("executionContext", executionContext); _autoCommit = autoCommit; _transactionFactory = transactionFactory; _outerTransactionStrategy = outerTransactionStrategy; _executionContext = executionContext; _child = NullTransactionStrategy.Null; _transaction = CreateTransaction(); var inParameters = _executionContext.GetInParameters(); try { EnsureCompatibility(inParameters); } catch (InvalidOperationException ex) { var message = "One or more of the input parameters passed to the WxeFunction are incompatible with the function's transaction. " + ex.Message; throw new WxeException(message, ex); } }
public override void UnregisterChildTransactionStrategy(TransactionStrategyBase childTransactionStrategy) { ArgumentUtility.CheckNotNull("childTransactionStrategy", childTransactionStrategy); if (_child != childTransactionStrategy) { throw new InvalidOperationException( "Unregistering a child transaction strategy that is different from the presently registered strategy is not supported."); } _child = NullTransactionStrategy.Null; }
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); }
public override void UnregisterChildTransactionStrategy(TransactionStrategyBase childTransactionStrategy) { ArgumentUtility.CheckNotNull("childTransactionStrategy", childTransactionStrategy); //NOP }
public abstract void UnregisterChildTransactionStrategy(TransactionStrategyBase childTransactionStrategy);
public ChildTransactionStrategy( bool autoCommit, TransactionStrategyBase outerTransactionStrategy, ITransaction parentTransaction, IWxeFunctionExecutionContext executionContext) : base(autoCommit, parentTransaction.CreateChild, outerTransactionStrategy, executionContext) { }
public RootTransactionStrategy( bool autoCommit, Func <ITransaction> transactionFactory, TransactionStrategyBase outerTransactionStrategy, IWxeFunctionExecutionContext executionContext) : base(autoCommit, transactionFactory, outerTransactionStrategy, executionContext) { }
public NoneTransactionStrategy(TransactionStrategyBase outerTransactionStrategy) { ArgumentUtility.CheckNotNull("outerTransactionStrategy", outerTransactionStrategy); _outerTransactionStrategy = outerTransactionStrategy; }