2016-06-22 6 views
0

Как установить в nhibernate так, чтобы при вызове session.Save() он обнаружил изменения в своих коллекциях.Nhibernate Не обнаруживает изменения родительского элемента при обновлении коллекции ребенка

Требуется обновить родительскую запись при изменении дочерней коллекции (вставить, обновить или удалить).

Благодаря

+0

Зачем вам нужно обновлять родителя? Это о оптимистической блокировке? Вам не нужно вызывать обновление, если объекты привязаны. У вас есть отдельные объекты? –

+0

Родитель является основной записью. например если вы обновите класс одного предмета, обновленная дата всех записей учащихся также должна быть обновлена. Моя проблема заключается в том, что существует автоматический способ сохранения nhibernate, только если есть изменения в его свойствах, но я также хочу проверить, есть ли у его коллекций обновления. –

ответ

0

Вы можете установить NHibernate, чтобы сохранить изменения сбора ребенка при сохранении родителя, установив атрибут каскадного на определении коллекции поэтому ваше отображение коллекции будет выглядеть примерно так:

<bag name="Children" table="tblChildren" inverse ="true" cascade="all-delete orphan" lazy="true"> 
    <key column="ChildId"/> 
    <one-to-many class="XXXX.Child, XXX"/> 
</bag> 
0

Родитель дата изменения - это то, что нужно решать вашей бизнес-логике. Если вы установите его явно, NH сохранит его. Если дата изменения установлена ​​в событии NHibernate или перехватчике, вы теряетесь, потому что NH не имеет причины обновлять родителя.

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

+0

Да, я просто ожидал, что слой, который обнаруживает, имеет ли сущность изменения, также может обнаружить, имеет ли дочерняя коллекция сущности изменения. Вставить дополнительную логику в этот слой должно быть достаточно, но я не уверен, что это где-то в NH –

 Смежные вопросы

  • Нет связанных вопросов^_^