0
没有为我们的实体类的一个后续的简化映射:级联删除可选逆加入
<class name="Parent" table="tParent">
<id name="Id">
<column name="ParentId" sql-type="bigint"/>
<generator class="native"/>
</id>
<join table="tOneToOneComponent" optional="true" inverse="true">
<key column="ParentId" on-delete="cascade"/>
<property name="Someprop"/>
</join>
</class>
基本上,它是一个对一个从关系的另一侧的外键(这是为什么我们设置“反向”)。另外,Parent可能在tOneToOneComponent中没有任何记录(所以可选的=“true”)。
我知道,这样的连接不被推荐,但是我们有一个老大的系统,我们没有时间去重新设计它。
当Parent被删除时,我们希望NHibernate删除相关的tOneToOneComponent。
当然,我们可以级联SQL服务器上的删除操作,但是我们需要清除NHibernate缓存以确保tOneToOneComponent不会保留在缓存中的某个位置。
所以我们增加了上删除=“级联”的,但现在,当我们删除父,SQL说:
The DELETE statement conflicted with the REFERENCE constraint
看来,NHibernate的是试图以错误的顺序删除记录。
如何告诉NHibernate首先删除tOneToOneComponent(如果存在),然后才删除父项?