Tengo una entidad 'Entrevista' que tiene un mapeo uno a uno con una entidad 'FormSubmission', la entidad Entrevista es el lado dominante por así decirlo, el mapeo es:Nhibernate - mapeo uno a uno con Cascade all-delete-huérfano, sin eliminar el huérfano
<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>
Ambas entidades son parte de un agregado con la actuación Entrevista como la raíz agregada. Estoy intentando guardar/actualizar/eliminar el FormSubmission a través de la entidad Entrevista, por lo tanto, he mapeado el extremo de la entrevista de la asociación como cascade = "all-delete-huérfano". Por ejemplo, puedo crear un nuevo FormSubmission bien como esto:
myInterview.Submission = new FormSubmission(myInterview);
InterviewRepository.Save(myInterview);
... y esto funciona bien, el FormSubmission se guarda. Sin embargo, me parece que no puede borrar el FormSubmission la que estoy tratando de hacer como esto:
myInterview.Submission = null;
InterviewRepository.Save(myInterview);
... pero esto no parece eliminar el FormSubmission. He intentado asignar nula a ambos lados de la asociación:
myInterview.Submission.Interview = null;
myInterview.Submission = null;
InterviewRepository.Save(myInterview);
Incluso he intentado establecer en cascada = "all-delete-orphan" en el lado FormSubmission, pero nada parece funcionar. ¿Qué me estoy perdiendo?
Aww hombre, eso es una mierda! Me pregunto cuál es su justificación para no apoyarlo. A juzgar por el tono en la respuesta de Fabio Maulo: 'uno a uno con' eliminar todo-huérfano '?' Supongo que él piensa que este tipo de mapeo es una mala idea, pero me pregunto por qué? –
Difícil de decir, es la pregunta directamente para Fabio :). De todos modos, parece que ya está implementado en Hibernate 3.5 (un año de antigüedad) según este número http://opensource.atlassian.com/projects/hibernate/browse/HHH-2608. No tengo idea de cómo se relacionan las versiones de Hibernate y NHibernate ... –
El [problema NH-1262] (https://nhibernate.jira.com/browse/NH-1262) ahora se marca como resuelto en la próxima versión 4.1. –