Договор - это агрегат?
От: zelenprog  
Дата: 09.10.23 10:35
Оценка:
Здравствуйте!

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

Как я понимаю, слой бизнес-логики должен состоять из следующих "элементов":
— бизнес-сущности для "объектов" из старой БД: "ОрганизацияСтарая", "КонтрагентСтарый", "ДоговорСтарый"
— бизнес-сущности для "объектов" в новой БД: "ОрганизацияНовая", "КонтрагентНовый", "ДоговорНовый"
— репозитории для этих сущностей
— метод "Конвертация", который выполняет основную работу: читает с помощью репозиториев старые данные, формирует из старых сущностей новые сущности, и с помощью других репозиториев записывает новые сущности в новую базу.

Верно?

Вопрос возник по агрегатам.
Договор — это как бы связь между нашей организацией и контрагентом. То есть он не может отдельно существовать без организации и без контрагента.
Следовательно, договор не может быть отдельным агрегатом, он должен быть одновременно частью и агрегата "Организация" и агрегата "Контрагент".
Однако, такого же не может быть?

Может быть сделать договор отдельным агрегатом? Соответственно придется делать отдельный Репозиторий.

Как лучше сделать?

Сейчас читаю статью и пытаюсь разобраться:
https://habr.com/ru/articles/660599/

Там выделение агрегата завязано на инвариантах. А какие тут инварианты?
Инвариант только один — договор не может существовать без организации и без контрагента.
А контрагент не может существовать без договора. И как это влияет на выделение агрегата?
Отредактировано 09.10.2023 10:48 zelenprog . Предыдущая версия . Еще …
Отредактировано 09.10.2023 10:37 zelenprog . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.