Asp. Net Core 3.1 Удалить агрегат Root с шаблоном DDD в EFCore - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь использовать 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, назначенные этому пользователю.

1 Ответ

0 голосов
/ 04 августа 2020

У меня недостаточно репутации, чтобы добавить комментарий к вашему сообщению, но вам следует взглянуть на этот пост Уди Дахана: Не удаляйте - просто не

Я думаю, что лучшая практика, которую вы ищете, - это «ничего не удалять». Go вернитесь в UL и обсудите, что на самом деле происходит, вместо того, чтобы что-то удалять. Я имею в виду, что в реальном мире вещи не просто «удаляют».

...