Клиент получил письмо об оформлении заказа, которого нет в базе
Сущность Order публикует доменное событие OrderPlaced. Обработчик события сразу отправляет письмо. События диспатчатся до SaveChangesAsync. Иногда сохранение падает на ограничении базы — а письмо уже ушло.
Как правильно связать события и транзакцию?
- Внешние эффекты — после коммита через outbox
- Отправлять письмо до создания заказа
- Повторять SaveChanges, пока не получится
- Отказаться от доменных событий
