コード例 #1
0
        public ICommandHandlerResult Execute(ICommandContext context, ChangeDepartmentInfoCommand command)
        {
            var root = context.GetAggregateRoot(command.AggregateId, () => departmentRepository.Rebuild(command.AggregateId));

            if (root == null)
            {
                return(context.CreateResult(CommandHandlerStatus.NotExists));
            }

            root.ChangeInfo(context, command);
            if (root.CanNotCommit())
            {
                return(context.CreateResult(CommandHandlerStatus.NothingChanged));
            }

            if (departmentRepository.Change(root) <= 0)
            {
                throw new RepositoryExcutingException("执行失败,请稍后再试");
            }

            return(context.CreateResult(CommandHandlerStatus.Success));
        }