我遇到了流利的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
表中删除具有父节点id的记录。但由于某种原因,NHibernate尝试使用null更新这些记录的ParentId
- 由于ParentId
不为空而失败。 编辑:我也期待Child对象不受影响(表现正常)。
我看了几个问题,他们都建议使用逆,但我已经这样做了。我做错了什么?
答案 0 :(得分:3)
所以我设法找到了一个解决方案,结果是有多个步骤:
SequencedChild
需要有一个将cascade设置为none的显式地图Inverse()
来电ParentId
字段应该是可空的,因为nHibernate在删除它之前坚持将其更新为null。 (如果有人知道解决方法,请发表评论)答案 1 :(得分:1)
尝试将级联更改为Cascade.AllDeleteOrphan()以删除SequencedChild表上的孤立子记录。