public virtual TOutput ExecuteTransaction(TInput inputParameter, ApplicationUser currentUser, IDataContext dataContext)
        {
            if (dataContext.CurrentTransaction() != null)
            {
                return(Execute(inputParameter, currentUser, dataContext));
            }

            using (var transaction = dataContext.BeginTransaction())
            {
                try
                {
                    var result = Execute(inputParameter, currentUser, dataContext);
                    transaction.Commit();

                    PostSaveTask = PostExecuteAction?.Invoke();

                    return(result);
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
Beispiel #2
0
 //main method allows for form actions before and after conversation
 public void Execute(object context)
 {
     PreExecuteAction?.Invoke(context);
     if (InitiatorConv)
     {
         InitatorConversation(ref context);
     }
     else
     {
         ResponderConversation(ref context);
     }
     if (Error == null)
     {
         PostExecuteAction?.Invoke(context);
     }
     else
     {
         FailureAction?.Invoke(context);
     }
     Done = true;
     ConversationDictionary.Instance.CloseQueue(MyQueue.QueueID);
 }