У меня возникла проблема с быстрым откатом каскада nhibernate. Я уверен, что я делаю что-то неправильно, потому что он не работает.Проблема с удалением каскада с NHibernate с нулевым уровнем
Вот мои объекты:
public class Parent
{
public int Id { get; set; }
public IList<SequencedChild> SequencedChildren { get; set; }
}
public class SequencedChild
{
public int Id { get; set; }
public int ParentId { get; set; }
public int ChildId { get; set; }
public int Sequence { get; set; }
}
public class Child
{
public int Id { get; set; }
}
И вот мое отображение:
HasMany(m => m.SequencedChildren).Inverse().Cascade.Delete();
Так что у меня родители с некоторыми секвенсированными детьми, и я хочу, чтобы обновить его родитель не иметь детей. Когда я делаю обновление без дочерних последовательностей этого родителя, я ожидаю, что в моей таблице SequencedChild
будут удалены записи, имеющие идентификатор родителя. Но по какой-то причине NHibernate пытается обновить ParentId
этих записей с нулевым значением - что не получается, поскольку ParentId
не является нулевым. EDIT: Я также ожидаю, что объект Child не затронут (который ведет себя правильно).
Я просмотрел несколько вопросов, и все они предлагают использовать инверсию, но я уже делаю это. Что я делаю не так?
Проблема в том, что сироты не могут быть созданы, так как ParentId NotNull и NHibernate пытается установить их в null. – 2010-12-03 01:14:15
В вашем классе SequencedChild действительно есть ParentId/ChildId, а не ссылки на родителя/ребенка? Если это так, Inverse() не будет работать, поскольку вы сообщаете NHibernate, что Child управляет отношением «один ко многим», но у ребенка нет обратной ссылки на его родителя. NHibernate не может сказать, что ParentId (int) является обратной ссылкой. – 2010-12-03 01:39:49