nHibernate: сохранение нового родительского объекта при создании дочернего объекта

Я пытаюсь сохранить запись с сопоставлением свойств «многие к одному». Я пытаюсь назначить здесь только что созданный родительский объект (или использовать существующий, но это нормально работает), но я получаю сообщение об ошибке, когда он пытается добавить идентификатор родительского объекта в дочернюю таблицу. Сказать, что он не может добавить NULL в таблицу, что верно, но я думал, что nHibernate был достаточно умен, чтобы сначала сохранить родительский объект, даже если я добавляю дочерний.

Сопоставления:

Ребенок:

 <many-to-one name="parent" class="ParentClass" column="parentID" cascade="all"/>

Родитель:

<bag name="DataList" table="ChildTable" lazy="false" inverse="true" cascade="all-delete-orphan">
      <key column="parentID" />
      <one-to-many class="ChildClass" />
    </bag>

В принципе, это то, что может сделать nHibernate?


person Damien    schedule 19.05.2009    source источник


Ответы (2)


Я не вижу вашего родительского сопоставления, но я бы поспорил, если у вас включен inverse = true и каскадирование для набора дочерних объектов, и вы разрешаете нули в столбце parentID вашего дочернего объекта, когда родительский объект обходится чтобы сохранить его, дочерний объект обновится должным образом.

person tom.dietrich    schedule 19.05.2009

Такое поведение может быть вызвано тем, что ваш первичный ключ «назначен», а не сгенерирован Nhibernate.

person Noctris    schedule 11.06.2009