У меня есть древовидная структура, сопоставленная с базой данных в таблице следующим образом:
UID numeric(18, 0)
NodeUID varchar(50)
Text nvarchar(50)
TreeLevel int
ParentUID varchar(50)
OrderInLevel int
IsLeaf bit
Это старая таблица, и я не могу ее изменить, так что терпите меня ...
NodeUID - это GUID.
столбец ParentUID сопоставлен с NodeId другой строки.
Корневой узел имеет значение "0" в столбце ParentUID.
Я пытаюсь отобразить дерево с помощью NHibernate следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="BasicFW.Core.Domain.NavigationTree.UsersNavigationTreeNode, BasicFW.Core" table="bDoxTreeNodes" lazy="false" schema="bDox.dbo">
<id name="NodeUId">
<column name="NodeUID"/>
<generator class="assigned"/>
</id>
<property name="Text">
<column name="Text"/>
</property>
<property name="TreeLevel">
<column name="TreeLevel"/>
</property>
<property name="IsLeaf">
<column name="IsLeaf"/>
</property>
<many-to-one name="Parent" class="BasicFW.Core.Domain.NavigationTree.UsersNavigationTreeNode, BasicFW.Core" column="ParentUID" not-found="ignore"/>
<bag name="Children" lazy="false" order-by="OrderInLevel ASC" cascade="all-delete-orphan" inverse="true">
<key column="ParentUID"/>
<one-to-many class="BasicFW.Core.Domain.NavigationTree.UsersNavigationTreeNode, BasicFW.Core" />
</bag>
</class>
</hibernate-mapping>
Дело в том, что когда я пытаюсь обновить узел (а корневой узел указывает на него), свойство Parent имеет значение null, и поэтому NHibernate пытается обновить столбец ParentUID до нуля, и поэтому он не выполняется, так как столбец не принять ноль.
спасибо