Ваша модель пытается вам что-то сказать.
Страна и штатПровинция, вероятно, не являются частью совокупности лиц.
Помните очень удобный «тест на удаление» для совокупности, спросите, удаляю ли я этого человека, я также удаляю его страну и StateProvince?Я живу в Канаде, и вы удаляете меня из своей системы. Собираетесь ли вы также удалить страну Канада из вашей системы?
Нет, вы бы этого не сделали.У вас есть два отдельных агрегата здесь Person и Location, в которых будет содержаться агрегат {Country, StateProvince} Если вы удалите страну, вы, скорее всего, удалите также все штаты или провинции, содержащиеся в ней.*
Только потому, что Person ссылается на класс или has-a класс, не делает все ссылки частью этого агрегата.Местоположение является очень распространенным агрегатом во многих системах и регулярно стоит самостоятельно.
У вас должен быть репозиторий Person, который использует LocationRepository и пользовательский интерфейс должен напрямую вызывать LocationRepository для получения агрегатов Location.