2014-02-20 4 views
1

Прежде всего, спасибо за ваш вклад в эту проблему. Я довольно новичок в разработке Driven Driven Design и ударяю себя по голове для решения некоторых проблем (я думаю, что они очень простые, я, конечно, чего-то не хватает).Разработка проблемы с моделью домена

Позвольте мне сначала описать свой домен немного. Я пытаюсь смоделировать типичную школу, в которой могут быть классные комнаты, каждая классная комната может иметь несколько разделов/групп и учащихся в каждой группе классов. Пользователями являются в основном школьный администратор и преподаватель. Администратор школы может создавать класс, учитель и ученик, тогда как преподаватель может создавать только группу и назначать студентов группе. Школа имеет глобальную идентичность, но классной комнаты нет. Класс имеет локальную идентичность, когда он является частью школьного образования. Классная комната уникальна только в классе.

Школа, безусловно, представляет собой совокупный корень с совокупностью классов внутри и отвечает за создание, удаление, обновление класса.

  1. Должен ли мы создать другой корень заполнителя для групп классов и классов (что, я думаю, не так, поскольку у них нет глобальных идентификаторов внутри домена).
  2. Создаем ли мы отдельный репозиторий для каждого из них?
  3. Должны ли мы обрабатывать создание/обновление класса, классной группы на уровне обслуживания?
  4. Нам нужно кэшировать данные, а поиск источников событий - хорошая идея для поддержания состояния в синхронизации. Вы видите какую-то проблему?

Любая помощь будет принята с благодарностью.

ответ

0
  1. Я думаю, что вы должны создать общий агрегатный класс. Вероятно, вы, вероятно, перечислите классные комнаты в некоторых отчетах, не так ли?
  2. Только для совокупных корней. Дети корней извлекаются родительским агрегированным корневым репозиторием.
  3. Нет. Если вы используете Entity Framework, вам достаточно добавить группу класса в список объектов класса. EF должен позаботиться об остальном. Остерегайтесь удаления, хотя!
  4. Если вы говорите о http://martinfowler.com/eaaDev/EventSourcing.html, разве это не способ отслеживать изменения?
+0

Спасибо за ваш ответ. Как вы думаете, я должен создать агрегатный корень для групп классов. Я не использую EF, поэтому может быть полезно, если у меня разные репозитории. Я думал, что источник событий - это место, где я могу фактически обрабатывать все изменения, чтобы правильно отражать в кэшированных объектах. Было бы здорово, если бы вы могли пролить свет на это. – Tariqulazam

+0

Привет, извините за задержку. Имеет ли классная группа какой-либо смысл вне класса? –

Смежные вопросы