как заставить nhibernate установить внешний ключ дочернего элемента?

у меня есть коллекция в отображении:

<bag name="Values" cascade="all-delete-orphan" lazy="false" inverse="true">
  <key column="[TemplateId]"/>
  <one-to-many class="MyNamespace.Value, MyLib"/>
</bag>

объект Value имеет внешний ключ [TemplateId]. оба объекта имеют генератор, установленный на «идентичность». когда я вызываю session.Save () для родительского объекта Template, у объектов Value их [TemplateId] (внешний ключ) устанавливается равным нулю, поэтому возникает исключение SQL. как заставить nhibernate установить значение FK для дочерних элементов равным значению вставленного родительского объекта?


person npeBeg    schedule 07.04.2010    source источник


Ответы (1)


Я сам с этим справился: единственное, что мне нужно было сделать, это спроектировать отображение дочерних объектов и сохранить его следующим образом:

<many-to-one name="Template" class="MyNamespace.Template, MyLib"
                 column="[TemplateId]" not-null="true" />

поэтому дочерний объект имеет ссылку на родительский вместо родительского Id

person npeBeg    schedule 07.04.2010
comment
решение было взято отсюда: stackoverflow.com/questions/1917845/ - person npeBeg; 07.04.2010