Итак, я новичок в DDD и пытаюсь правильно разработать приложение. Но у меня возникли некоторые трудности с определением совокупных корней.
Мне нужно более или менее дерево
*Customers
*Each customer can have 0 or more licenses
*Each license can have 0 or more courses
*Each course can have 0 or more lessons
*Each lesson can have 0 or more slides and videos
Наконец, у меня есть викторины/тесты, которые можно связать почти с чем угодно, даже с определенным моментом в видео урока.
Независимо от того, как я об этом думаю, я получаю только то, что Клиент будет корнем агрегата для агрегата, который содержит [Клиент, Лицензия, Курс, Урок, Слайд, Видео].
Но это довольно большая совокупность, и я понял, что больших совокупностей следует избегать.
Тогда викторина будет совокупностью вопросов, ответов и так далее. В качестве второго вопроса, который я мог бы задать, как должна выглядеть ссылка? потому что, скажем, я хочу, чтобы викторина появлялась в видео через 4 минуты. Что ж, тогда моя викторина должна быть связана с этим видео и хранить время. Но это видео глубоко внутри другого агрегата (под клиентом, лицензией, курсом, уроком) и не должно быть напрямую связано напрямую с этим агрегатом викторины.
Итак, как мне это решить. Я заказал свою большую книгу DDD, но ее не будет здесь какое-то время. Если бы я мог понять это раньше, было бы здорово!
Я не должен иметь значения, но я использую .net С# mvc с шаблоном ef5 и репозитория.