我遇到了流利的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
表中具有父母的ID的记录将被删除。但由于某种原因NHibernate试图更新ParentId
这些记录为空 - 失败,因为ParentId
不为空。 编辑:我也期待子对象不受影响(这是行为正确)。
我看了几个问题,他们都建议使用逆,但我已经这样做了。我究竟做错了什么?
问题是孤儿不能被创建,因为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