NHibernate - 在删除时设置对null的引用

时间:2011-11-22 19:13:02

标签: c# nhibernate nhibernate-mapping

我已经厌倦了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。 有人能以正确的方式指出我如何做到这一点? - 谢谢。

1 个答案:

答案 0 :(得分:1)

也许Ayende Rahien的这篇文章会帮助你:the different between all all-delete-orphans and save-update

  

以下是每个级联选项的含义:

     
      
  • none - 不做任何级联,让用户自己处理它们。
  •   
  • save-update - 保存/更新对象时,检查关联并保存/更新任何需要它的对象(包括   保存/更新多对多方案中的关联。)
  •   
  • delete - 删除对象时,删除关联中的所有对象。
  •   
  • delete-orphan - 删除对象时,删除关联中的所有对象。除此之外,当一个对象被删除   来自关联而不与另一个对象相关联   (孤儿),也删除它。
  •   
  • all - 当一个对象被保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。
  •   
  • all-delete-orphan - 当对象保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。在   除此之外,当从关联中删除对象时   与另一个对象(孤立的)没有关联,也删除它。
  •