2010-09-13 65 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

相關問題