Как гласит название, в основном я хочу изменить родителя ребенка. Но когда я пытаюсь сделать это, я получаю исключение «ObjectDeletedException: удаленный объект будет повторно сохранен cascade (удалить удаленный объект из ассоциаций)».NHibernate: Change Parent - «удаленный объект будет повторно сохранен каскадом»
Я уже много часов работаю в Интернете, но ни одно из решений, которые я нашел, не работало для меня !!
Это мои классы участвуют:
public class Parent: Entity
{
public virtual IList<Child> Children { get; set; }
}
public class Child: Entity
{
public virtual DateTime? CancellationDate { get; set; }
}
Класс Entity является тот, который имеет свойство Id.
Это родителя отображение (Parents.hbm.xml):
<bag name="Children" cascade="all-delete-orphan" table="Schema.Child" where="CancellationDate is null">
<key column="ParentID"/>
<one-to-many class="Namespace.Child"/>
</bag>
И это кусок кода, где я пытаюсь reasign ребенка другому родителю:
foreach(Child c in Parent1.Children)
{
Parent2.Children.Add(c);
}
Но то session.Flush()
выдает исключение выше. Я предполагаю, что проблема в том, что с тех пор, как ребенок изменил родителя, из-за каскадного NHibernate пришлось бы избавиться от Ребенка, но затем он был переназначен родителям anothet, поэтому, опять же из-за каскада, за исключением ребенка.
Я уже попытался изменить отображение и удаление ребенка из коллекции бывшего родителя (до или после того, как я задаю его к другому родителю), но ни один из тех, кто работал ...
Любая помощь будет очень признателен !!
Спасибо!
как возможное решение, попробуйте добавить КОПИИ родителей1 ребенка к parent2. имейте в виду, что это создаст (после сохранения) новые записи в db, связанные с parent2, и удалит строки родительских 1 дочерних элементов. Или вы просто хотите обновить ParentId? – ASh
Да, я думал об этом решении, но я не могу создать новый, Id ребенка должен остаться тем же ... Спасибо в любом случае !! –
полезно? http://stackoverflow.com/questions/2763985/how-do-i-change-a-childs-parent-in-nhibernate-when-cascade-is-delete-all-orphan – ASh