我有了一个一对一的映射与“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