我想要做的是非常直截了当,但我似乎无法使用 NHibernate 获得正确的映射。
我正在处理具有父对象和子对象的数据库。子对象具有对数据类型 Guid 的父主键的外键引用。在任何情况下都很正常。现在数据库的设置方式是外键字段永远不能为空,因此对于没有父对象的孤立对象,外键应该是空的 Guid ('00000000-0000-0000-0000-000000000000 ')。
我设置 Nhibernate 的方式长期以来一直运行良好,但最近我将关系设置为双向,然后开始出现问题。显然,NHibernate 会看到父级为 null 并尝试将 null 保存到外键字段,但这是不允许的!
我正在使用的关系映射的结构示例如下。
父方映射:
<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" 属性,如果是这样,我该如何准确地维护这些关系?
提前感谢您的帮助。