我已经厌倦了NHibernate-Mapping:
<class name="Activity" table="Activity" lazy="false" >
<cache usage="read-write"/>
<id name="Id" column="Id" type="Guid">
<generator class="assigned"/>
</id>
<property name="Subject" column="Subject" type="String" length="255" />
<many-to-one name="ParentActivity" class="Activity" foreign-key="FK_Activity_ParentActivity" lazy="proxy" fetch="select">
<column name="ParentActivityId"/>
</many-to-one>
<set name="Activities" lazy="true" inverse="true" cascade="none" >
<key>
<column name="ParentActivityId"/>
</key>
<one-to-many class="Activity"/>
</set>
我现在有一个实体活动(x),它将另一个实体活动(y)设置为ParentActivity。 我正在寻找解决方案,当我删除实体y时,从x到y的引用被设置为null。现在我变成了一个错误,我因为FK_Activity_ParentActivity而无法删除x。 有人能以正确的方式指出我如何做到这一点? - 谢谢。
答案 0 :(得分:1)
也许Ayende Rahien的这篇文章会帮助你:the different between all all-delete-orphans and save-update
以下是每个级联选项的含义:
- none - 不做任何级联,让用户自己处理它们。
- save-update - 保存/更新对象时,检查关联并保存/更新任何需要它的对象(包括 保存/更新多对多方案中的关联。)
- delete - 删除对象时,删除关联中的所有对象。
- delete-orphan - 删除对象时,删除关联中的所有对象。除此之外,当一个对象被删除 来自关联而不与另一个对象相关联 (孤儿),也删除它。
- all - 当一个对象被保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。
- all-delete-orphan - 当对象保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。在 除此之外,当从关联中删除对象时 与另一个对象(孤立的)没有关联,也删除它。