2010-02-04 41 views
4

我試圖通過清除集合(list.clear())或在父級上創建集合的新實例來清除父/子關係中的集合。NHibernate一次性刪除

與此類似: http://markmail.org/message/mnvooa7g57dlbxta#query:+page:1+mid:mnvooa7g57dlbxta+state:results

我的測試是幾乎等同於一個在上面的鏈接。我嘗試了幾種設置的組合,但對於我的生活,我無法讓NHibernate爲每個子對象發出一個sql刪除,而不是每個子對象的sql刪除。我肯定錯過了什麼。

+0

你能發佈你的代碼嗎? – David 2010-02-04 22:55:21

+0

我可以在今晚晚些時候發佈代碼。我在Oren的相同測試中做了一個例子,但是使用Fluent做了映射,從那裏我嘗試了幾個變種。 – 2010-02-05 02:06:00

回答

2

有趣的帖子。你在NHibernate Jira中跟蹤了ayendes problem嗎?我試圖和謝爾蓋Koshcheyev標記爲'不是一個問題',因爲inverse = true映射,似乎禁止一次性刪除工作,這意味着我反相映射禁止刪除孤兒正常工作,導致孤兒似乎太過獨立了。 (不確定這是否是正確的形容詞)

嘗試從父代進行單向映射(如果可能的話),而不是使子代更加依賴並且(希望)可以一次性刪除。

+0

有趣的是,我從來沒有想過,也許一槍只會刪除一對多的單向關聯。我會試一試看看。 – 2010-02-05 02:08:40

+0

我嘗試了單向關聯,並得到了相同的結果。也許它已在2.12中刪除。這不是什麼大不了的事情,我只是想讓它起作用。 – 2010-02-06 19:04:58

0

一次性刪除可能會產生意想不到的副作用,所以我認爲NHibernate播放起來很安全,只會刪除從該集合中清除的子節點。當然你可以使用hql來編寫自己的刪除。

+0

的確,我可以編寫hql,我更加好奇爲什麼我無法使其工作,並且可能刪除了功能。 – 2010-02-06 19:06:38