Beispiel #1
0
        protected object ExecuteCommand(IUnitOfWorkCommand command, UnitOfWorkInfo info)
        {
            var execution = BeginUnitOfWork(info);

            try
            {
                var result = command.Execute();
                return(result);
            }
            catch (Exception e)
            {
                execution.HandleException(e);

                if (e is TargetInvocationException)
                {
                    throw e.GetBaseException();
                }

                throw;
            }
            finally
            {
                execution.End();
            }
        }
Beispiel #2
0
        /// <summary>
        ///   Run a command in a new Unit Of Work.
        /// </summary>
        /// <seealso cref = "IUnitOfWorkCommand" />
        /// <seealso cref = "UnitOfWorkInfo" />
        /// <param name = "command">Command to execute.</param>
        /// <param name = "info">Unit of work information.</param>
        /// <returns>The return value of the Unit of Work.</returns>
        public void RunUnitOfWorkAsync(IUnitOfWorkCommand command, UnitOfWorkInfo info)
        {
            var worker = new BackgroundWorker();

            if (IsUnitOfWorkRunning)
            {
                worker.DoWork += delegate { command.Execute(); };
            }

            CallBegin();
            worker.DoWork += delegate
            {
                try
                {
                    lock (executionPermit)
                    {
                        ExecuteCommand(command, info);
                    }
                }
                catch (Exception e)
                {
                    CallUnhandledException(e);
                }
                finally
                {
                    CallEnd();
                }
            };
            worker.RunWorkerAsync();
        }
        protected async Task <T> Execute <T>(IUnitOfWorkCommand <T> cmd)
        {
            T result = default(T);

            using (var unitOfWork = new UnitOfWork(_connectionProvider))
            {
                try
                {
                    result = await cmd.Invoke(unitOfWork);
                }
                catch (Exception e)
                {
                    unitOfWork.Rollback();
                    throw e;
                }
            }

            return(result);
        }
 public BaseEntityUnitOfWorkCommand(IUnitOfWorkCommand unitOfWork) => _unitOfWork = unitOfWork;
Beispiel #5
0
 /// <summary>
 ///   Run a command in a new Unit Of Work.
 /// </summary>
 /// <seealso cref = "IUnitOfWorkCommand" />
 /// <seealso cref = "UnitOfWorkInfo" />
 /// <param name = "command">Command to execute.</param>
 /// <param name = "info">Unit of work information.</param>
 /// <returns>The return value of the Unit of Work.</returns>
 public object RunUnitOfWork(IUnitOfWorkCommand command, UnitOfWorkInfo info)
 {
     return(IsUnitOfWorkRunning ? command.Execute() : ExecuteCommand(command, info));
 }
 public AmountModificationUowCommand(IUnitOfWorkCommand unitOfWork) : base(unitOfWork)
 {
 }
Beispiel #7
0
 public TransactionUnitOfWorkCommand(IUnitOfWorkCommand unitOfWork) : base(unitOfWork)
 {
 }