我有了一個一對一的映射與「FormSubmission」實體「面試」實體,面試實體占主導地位的側面可以這麼說,映射是:NHibernate的 - 一到一個映射與級聯全刪除,孤兒,不刪除孤兒
<class name="Interview">
<id name="Id" column="Id" type="Int64">
<generator class="identity" />
</id>
// other props (snip)....
<one-to-one name="Submission" class="FormSubmission"
cascade="all-delete-orphan" />
</class>
<class name="FormSubmission">
<id name="Id" column="Id" type="Int64">
<generator class="foreign">
<param name="property">Interview</param>
</generator>
</id>
// other props (snip)....
<one-to-one name="Interview" class="Interview"
constrained="true" cascade="none" />
</class>
兩個實體都與面試充當聚合根集合的一部分。我試圖通過Interview實體保存/更新/刪除FormSubmission,因此我已將關聯的訪問結束映射爲cascade =「all-delete-orphan」。例如,我可以創建一個新的FormSubmission,就像這樣:
myInterview.Submission = new FormSubmission(myInterview);
InterviewRepository.Save(myInterview);
...這工作得很好,FormSubmission被保存。不過,我似乎無法刪除的,我試圖做這樣的FormSubmission:
myInterview.Submission = null;
InterviewRepository.Save(myInterview);
...但是這似乎並沒有刪除FormSubmission。我試着將null分配給協會的兩面:
myInterview.Submission.Interview = null;
myInterview.Submission = null;
InterviewRepository.Save(myInterview);
我甚至試過設置級聯=「全刪除,孤兒」的FormSubmission的一面,但似乎沒有任何工作。我錯過了什麼?
噢人,這太差勁了!我想知道他們不支持它的理由是什麼?從法比奧毛羅的回答中的口吻來判斷:「與」全部刪除孤兒「是一對一的?我想他認爲這種映射是一個壞主意,但我想知道爲什麼? – 2011-04-19 08:01:27
很難說,這是直接針對法比奧的問題:)。反正它似乎是Hibernate 3.5(一歲),根據這個問題http://opensource.atlassian.com/projects/hibernate/browse/HHH-2608已經實施。不知道Hibernate和NHibernate版本是如何相關的... – 2011-04-19 19:45:25
[NH-1262問題](https://nhibernate.jira.com/browse/NH-1262)現在在即將到來的4.1版本中被標記爲已解決。 – 2016-05-10 08:02:55