nHibernate Сохранить один-ко-многим - PullRequest
1 голос
/ 21 января 2010

У меня есть родительский класс, который содержит список детей. У меня двунаправленное отображение родителя и потомка с has-many и обратным на родительском с включенным cascade.all Если я изменяю объект в дочернем списке, но не родительское свойство, nHibernate не сохраняет дочерний. Если я изменю свойство родительского объекта, все будет в порядке. Это по замыслу или мне нужно установить специальное свойство?

Ответы [ 2 ]

0 голосов
/ 21 января 2010

Я понял это. Я тестировал аудит с использованием различных планировщиков. Когда я присоединился к IFlushEntityListner, это вызвало сохранение перестало работать Боже, это было неприятно. Спасибо всем!

0 голосов
/ 21 января 2010

Это может быть связано с тем, как вы добавляете детей в коллекцию. В двунаправленном режиме вы должны управлять обеими сторонами отношений в коде. Рассмотрим пример из Fluent Nhibernate Руководство по началу работы . Проверьте Магазин.

В магазине много сотрудников. Собственность персонала Магазина - это коллекция Сотрудников. Отношения настроены как двунаправленные.

Магазин имеет следующий метод

public virtual void AddEmployee(Employee employee)
{
  employee.Store = this;
  Staff.Add(employee);
}

Как видите, для свойства childs Parent необходимо установить родительский объект. Если этого не сделать, то Nhibernate не сможет понять, кто является родительским объектом дочернего элемента, и не сможет автоматически сохранить дочерний элемент, если будет изменен только дочерний элемент и вызван SaveOrUpdate (parent).

Вы должны сделать оба.

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