FluentNhibernate, указать или автоматически создать поле внешнего ключа? - PullRequest
0 голосов
/ 06 июня 2011

Я изучаю FluentNHibernate, и до сих пор я не определял FK в качестве полей свойств, но разрешил их автоматическое создание из сопоставлений.

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

Так что я думаю, что этот вопрос касается использования агрегатных корней.Как они могут быть структурированы?Я думал, что один агрегат может быть частью другого агрегата, что означает, что вы можете сохранить агрегат более низкого уровня без сохранения всего корня.Это правда?И в этом случае, нам не нужно указывать FK, если мы имеем дело с вновь добавленной сущностью?Следовательно, это поле должно быть закодировано в наших классах, а не просто автоматически сгенерировано, как я сейчас делаю?

1 Ответ

0 голосов
/ 06 июня 2011

Если вы действительно хотите сохранить одну сущность, а не совокупный корень, вам нужно определить свойство, которое ссылается на родительскую сущность, позволяя вам установить его и сохранить единственную сущность. Лично я не вижу никаких проблем с этим. Хотя, по-видимому, это не очень хорошая практика DDD .

Чтобы сохранить объект более низкого уровня, а не его совокупный корень, вам все равно нужно будет указать родительский объект. Наверное, поэтому лучше работать с рутом напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...