Я пытаюсь использовать DDD для своего приложения, и когда агрегат root создается или редактируется, я добавляю DomainEvent, который будет повышен в репозитории SaveChange для меня.
Теперь моя проблема находится в операции удаления, потому что мой объект root имеет функцию для создания или удаления, но для операции удаления единственный способ - вызвать удаление в репозитории, как этот код, который у меня есть в одном из моих CommandHandler
entity.AddDomainEvent(new NodeRemovedPublicEvent(request.NodeId));
_repository.Delete(entity);
await _repository.UnitOfWork.SaveChangesAsync();
таким образом мне нужно не забывать создавать событие домена каждый раз, когда я использую _repository.Delete (). Мне не нравится эта операция, есть лучшая практика для таких ситуаций?
РЕДАКТИРОВАТЬ 1: (не удалять никогда). Я думаю, что это лучший способ избежать проблем с транзакцией при удалении, e cc ... Таким образом, мне нужно реализовать логическое удаление. В моем случае, когда идентификатор root удаляется (логическое удаление то же самое), мне нужно удалить другой объект (логическое удаление). Для этого мне нужно сгенерировать событие домена. Если я не инициирую это событие, у моей сущности есть логическое удаление, а у сущности заказа нет. Это правда, что без этого объекта объект заказа не может загружаться, но мне нужно знать, что связанный объект «связан» с логическим удалением объекта. Например, если я удаляю пользователя объявления, и у этого пользователя есть объект Food, мне нужно удалить все объекты Food, назначенные этому пользователю.