Я согласен, вариант 1 звучит лучше, но, возможно, предложит добавить обработчик pre для проверки вашего ввода?
Так что ImportUsersCommandHandler имеет дело с импортом ваших данных (и только это) и добавить обработчик, который запускается до того, как он проверяет (в вашем примере проверяет пользовательские типы и, возможно, другие вещи) и выдает из него выход, не проходит. Таким образом, он запрашивает базу данных, проверяет пользовательские типы и делает все, что ему нужно, в случае неудачи. В противном случае он просто передается вашему обработчику business (ImportUsersCommandHandler).
Я привык использовать Mediatr в NET Core, и этот шаблон работает хорошо (это то, что мы делаем), так что извините если это не соответствует вашей среде / настройке!