void IHandleCommands <TCommand> .Handle(ICommandHandlingContext <TCommand> handlingContext)
        {
            var command = handlingContext.Command;

            var domainRepository = _domainRepositoryResolver.GetRepository(null);

            try
            {
                var aggregateRoot = domainRepository.GetById <TAggregateRoot>(command.AggregateRootId);

                ValidateTheCommand(handlingContext, command, aggregateRoot);

                Handle(command, aggregateRoot);

                if (aggregateRoot != null)
                {
                    domainRepository.Save(aggregateRoot);
                }
            }
            finally
            {
                if (domainRepository != null)
                {
                    _domainRepositoryResolver.Release(domainRepository);
                }
            }
        }
        public override void Handle(NewShopItemCommand command)
        {
            var item = new ShopItem(command.TenantId, command.ItemId, command.Description);

            var repo = _repositoryResolver.GetRepository(command.TenantId);

            repo.Save(item);
            _repositoryResolver.Release(repo);
        }