В обход совокупного корня

2

Можно ли получить сборку только для чтения из совокупности, не проходя через корень, чтобы получить ее? Моя модель делает некоторые из этих прав прямо сейчас, и мне было интересно, если это приемлемый дизайн. Благодаря

Изменить:

Здесь пример

У меня есть агрегированный корневой объект под названием UserAccount и другой агрегированный корень, называемый VideoStore. Пользователи могут иметь несколько магазинов, в которых они находятся, и в магазинах видео может быть много пользователей. Очень простой, многие из многих, но это не потому, что таблица моста "много ко многим" содержит информацию о состоянии, поэтому она также должна быть сущностью. Итак, у меня есть объект-мост, называемый UserVideoStores и его дочерний элемент совокупного корневого VideStore (один-ко-многим).

Теперь, когда пользователь входит в систему, я хочу найти, какие видео-магазины они разделяют и отображают эту информацию. Я легко могу сделать это, создав у объекта UserAccount прямую ссылку (один ко многим) для дочернего объекта UserVideoStores из совокупности корневых видеостоков. Кажется, что это проще сделать, тогда нужно использовать запрос HQL и искать в нижней части графика, чтобы найти, в котором хранится пользователь.

Это имеет смысл?

Edit:

Ну, я придумал решение сделать мою модель чище. Я не думал прямо о некоторых своих проектах, и я научился использовать nHibernate немного лучше, чтобы помочь мне придумать решение. Благодаря

  • 0
    Можете привести пример?
Теги:
aggregate
domain-driven-design
nhibernate

2 ответа

2
Лучший ответ

Эванс говорит: "Корень является единственным членом AGGREGATE, что внешним объектам разрешено удерживать ссылки на..." (стр. 127)

Я понимаю, что агрегат должен отображаться как единое целое для внешних объектов. Кроме того, применим Закон Деметры. Итог, я не думаю, что это приемлемо.

  • 0
    Да, ты прав. Я нарушил некоторые законы с этим дизайном. Мне, наверное, нужно прочитать DDD книгу Эвана. Это, наверное, очень мне поможет. Спасибо
2

На самом деле Эрик изменил свое мнение о строгости сводных правил корней.
Недавно он сказал что-то вроде

"Ошеломляй чувак. Постарайся перестать нарушать правила человека. Но, эй, не бей себя над ним. DDD гордится чуваком, но нарушайте правила Agg, если вам действительно нужно. Да, мир."

См:   "Эрик Эванс: Что я узнал о DDD с книгой" http://dddcommunity.org/library/evans_2009_1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню