2010-09-13 151 views
1

我有一个单向的多对多关联:ListDefinition类具有IList类型的Columns属性,而列可以是多个ListDefinition-秒。问题是,每当我尝试从一个Columns集合中删除一列(不删除它或从其他ListDefinitions删除),我得到这个错误:
删除的对象将被级联重新保存(从关联中删除删除的对象)[Domain.Lists.Definitions.ListColumnDefinition#2]从NHibernate中的多对多关联中移除一个项目

经由流利NH生成我的映射:

​​

这里的所生成的HBM:

<休眠映射的xmlns =“瓮:NHibernate的-mapping-2.2“default-access =”property“auto-impo rt =“true”default-cascade =“all”default-lazy =“false”>
< class xmlns =“urn:nhibernate-mapping-2.2”mutable =“true”name =“Domain.Lists.Definitions.ListDefinition ,域,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null“
< id =”System.Int32,mscorlib,版本= 4.0.0.0,文化=中性公钥= b77a5c561934e089 “>
<列名=” ID” />
<发生器类= “身份”/>
</ID>
<列表级联= “全删除-孤儿” 名称= “列” 表= “ListColumnDefinitionToListDefinition” 可变= “真”>
<键>
<列名= “ListDefinition_id”/> < /键>
<指数>
<列名=” index “/>
< /指数>
<多对许多类=” Domain.Lists.Definitions.ListColumnDefinition,域版本= 1.0.0.0,文化=中性公钥= null“>
<列名= “ListColumnDefinition_id”/>
< /许多一对多>
< /列表>

< /类> < /休眠映射>

+0

不知道如果我明白你在做什么,你可以粘贴相关代码吗? (如何删除抛出此错误的实体) – 2010-09-13 19:20:00

+0

我*不*删除实体。我只是这样做: listDefinition.Columns.Remove(column); – ulu 2010-09-14 07:50:06

回答

1

确定 “all-delete-orphan”你想要什么?

来自第21.3节。上述链接的级联生命周期:

In our case, a Child cannot exist without its parent. So if we remove a Child from the collection, we do want it to be deleted. To do this, we must use cascade="all-delete-orphan".

+1

是正确的。全部使用而不是AllDeleteOrphan。 – 2010-09-13 22:16:37

相关问题