【发布时间】:2011-02-28 09:44:49
【问题描述】:
我有一个树结构映射到这样的表中的数据库:
UID numeric(18, 0)
NodeUID varchar(50)
Text nvarchar(50)
TreeLevel int
ParentUID varchar(50)
OrderInLevel int
IsLeaf bit
这是一张旧桌子,我不能改变它,所以请耐心等待......
NodeUID 是一个 GUID。
ParentUID 列映射到不同行的 NodeId。
根节点在其 ParentUID 列中的值为“0”。
我正在尝试像这样使用 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 列更新为 null,因此它失败了,因为 to 列不会接受空值。
谢谢
【问题讨论】:
标签: c# asp.net sql nhibernate