Имеет ли значение, какую сторону двунаправленного отношения «многие ко многим» вы задали как обратную в NHibernate? - PullRequest
1 голос
/ 01 мая 2010

Простой вопрос: имеет ли значение, какую сторону двунаправленного отношения «многие ко многим» вы задаете как обратную в NHibernate? И если так, каковы последствия установки его на одном конце по сравнению с другим?

Еще несколько уточнений: я устанавливаю обе стороны отношений:

Parent.Children.Add(child);
Child.Parents.Add(parent);

В таком случае имеет значение, какую сторону я отмечу как обратную?

1 Ответ

3 голосов
/ 01 мая 2010

Да, это важно, изменения, внесенные только в обратный конец ассоциации, не сохраняются

Вы можете проверить документацию nhibernate для получения более подробной информации. Здесь у вас есть ссылка:

http://www.nhforge.org/doc/nh/en/#collections-bidirectional

EDIT

Мой ответ не изменится с вашим добавлением, но я постараюсь объяснить это лучше: -)

если вы установили Parent.Children с помощью inverse = true, вам нужно сохранить дочерний объект, чтобы сохранить отношение. Если вы сохраните ТОЛЬКО родитель, то связь не будет сохранена

если вы установили Child.Parent с помощью inverse = true, вам нужно сохранить родительский объект для сохранения отношения. Если вы сохраните ТОЛЬКО ребенка, то связь не будет сохранена

category.Items.Add(item);  // The category now "knows" about the relationship
item.Categories.Add(category);  // The item now "knows" about the relationship

session.Update(item);    // No effect, nothing will be saved!
session.Update(category);    // The relationship will be saved
...