Надеюсь, я еще не опоздал ... но мы столкнулись с похожей ситуацией в нашем проекте, мы фактически перехватываем исполнителя команды и присоединяем его к набору правил, созданных для этой команды, которая, в свою очередь, использует запрос для извлечения данные.
Таким образом, в этом случае у нас может быть класс с именем CustomerEmailMustBeUniqueRule, который выбирается RuleEngine, когда команда «RegisterCustomerCommand» собирается выполнить RegisterCustomerCommandExecutor. Этот класс правил отвечает за запрос к базе данных, чтобы определить, существует ли идентификатор электронной почты, и остановить выполнение, подняв недопустимый флаг ...