Здравствуйте!
Начинаю делать программу для конвертации контрагентов из старой базы в новую.
На данный момент, интересуют следующие таблицы, которые есть в базе данных: Организации, Контрагенты, Договора.
Организации — это наши организации, их несколько.
Как я понимаю, слой бизнес-логики должен состоять из следующих "элементов":
— бизнес-сущности для "объектов" из старой БД: "ОрганизацияСтарая", "КонтрагентСтарый", "ДоговорСтарый"
— бизнес-сущности для "объектов" в новой БД: "ОрганизацияНовая", "КонтрагентНовый", "ДоговорНовый"
— репозитории для этих сущностей
— метод "Конвертация", который выполняет основную работу: читает с помощью репозиториев старые данные, формирует из старых сущностей новые сущности, и с помощью других репозиториев записывает новые сущности в новую базу.
Верно?
Вопрос возник по агрегатам.
Договор — это как бы связь между нашей организацией и контрагентом. То есть он не может отдельно существовать без организации и без контрагента.
Следовательно, договор не может быть отдельным агрегатом, он должен быть одновременно частью и агрегата "Организация" и агрегата "Контрагент".
Однако, такого же не может быть?
Может быть сделать договор отдельным агрегатом? Соответственно придется делать отдельный Репозиторий.
Как лучше сделать?
Сейчас читаю статью и пытаюсь разобраться:
https://habr.com/ru/articles/660599/
Там выделение агрегата завязано на инвариантах. А какие тут инварианты?
Инвариант только один — договор не может существовать без организации и без контрагента.
А контрагент не может существовать без договора. И как это влияет на выделение агрегата?