Заполните VO в выпадающем списке в пользовательском интерфейсе - PullRequest
1 голос
/ 24 марта 2011

У меня есть класс Person, который является корнем его агрегата, этот агрегат также содержит страну и провинцию штата как vo.

{Person, Country, StateProvince} -> Person является корневым агрегатом.

// Публичное лицо (имя строки, строка страны, провинция штата, {другие параметры}) {}

// Но теперь я сталкиваюсь с проблемой в пользовательском интерфейсе, как я буду заполнять Dropdown для Country и Stateprovince через пользователя, потому что он является корневым агрегатом, но я не хочу, чтобы назначенный любому человеку Country или Stateprovince, но я хочу список всех стран и их Stateprovince, так что пользователь выбирает одну из них

Должен ли я вручную создать таблицу для страны и штата и заполнить их всеми значениями вручную. Если да, то как я получу значения из этих таблиц в ddd.

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

Ваша модель пытается вам что-то сказать.

Страна и штатПровинция, вероятно, не являются частью совокупности лиц.

Помните очень удобный «тест на удаление» для совокупности, спросите, удаляю ли я этого человека, я также удаляю его страну и StateProvince?Я живу в Канаде, и вы удаляете меня из своей системы. Собираетесь ли вы также удалить страну Канада из вашей системы?

Нет, вы бы этого не сделали.У вас есть два отдельных агрегата здесь Person и Location, в которых будет содержаться агрегат {Country, StateProvince} Если вы удалите страну, вы, скорее всего, удалите также все штаты или провинции, содержащиеся в ней.*

Только потому, что Person ссылается на класс или has-a класс, не делает все ссылки частью этого агрегата.Местоположение является очень распространенным агрегатом во многих системах и регулярно стоит самостоятельно.

У вас должен быть репозиторий Person, который использует LocationRepository и пользовательский интерфейс должен напрямую вызывать LocationRepository для получения агрегатов Location.

0 голосов
/ 24 марта 2011

Вы бы заполнили свою страну и провинцию штата из разных таблиц. Затем вы должны заполнить выпадающие списки из этих таблиц. При работе с конкретным объектом Person, которому уже назначены Country и StateProvince, вы должны связать их с мастер-таблицами через id.

Надеюсь, это поможет.

...