То, что я пытаюсь сделать, на самом деле довольно прямолинейно, но, похоже, я не могу правильно составить карту с помощью NHibernate.
Я работаю с базой данных с родительскими и дочерними объектами. Дочерние объекты имеют ссылку внешнего ключа на первичный ключ родительского объекта, имеющий тип данных Guid. Довольно нормально в любом случае. Теперь база данных настроена таким образом, что поле внешнего ключа никогда не должно быть нулевым, поэтому в случае объектов-сирот без родительского элемента внешний ключ должен быть пустым Guid ('00000000-0000-0000-0000-000000000000 «).
То, как я настраивал Nhibernate, долгое время работало нормально, но недавно я сделал отношения двунаправленными, и тогда начались проблемы. Очевидно, что NHibernate увидит, что родительский объект является нулевым, и попытается сохранить нулевое значение в поле внешнего ключа, но это недопустимо!
Пример структуры отображения отношений, которую я использую, приведен ниже.
Отображение родительской стороны:
<id name="ID" column="ID">
<generator class="guid" />
</id>
<bag name="Children" table="Children" lazy="false" cascade="all" inverse="true">
<key column="FK_OwnerID" not-null="true"/>
<one-to-many class="Childclass"/>
</bag>
Отображение на стороне ребенка:
<many-to-one name="Owner" column="FK_OwnerID" not-found="ignore" not-null="false" class="OwnerClass"/>
Я пробовал с разными свойствами, но безрезультатно. Я вынужден использовать свойства insert = "false" и update = "false", и если да, то как именно поддерживать отношения?
Заранее спасибо за любую помощь.