NHibernate父/子关系

时间:2010-01-05 20:35:03

标签: nhibernate

我有以下设置:

public class ParentEntity
{
   public ICollection<ChildEntity> {get; set; }
}

public class ChildEntity
{
   // do i need to the parent here?
}

我设法保存ParentEntity,并将保存级联到已保存的已添加子实体。但是在db表中,子项的ParentId引用被设置为允许NULL。当将其设置为NOT NULL时,由于子表中的ParentId为NULL,因此保存失败。

那里发生了什么? ;)

何时

2 个答案:

答案 0 :(得分:1)

您应该正常映射关系的两侧,当您将子项添加到父级的集合时,还应该在子级上设置父属性。通常你会通过写一个这样的方法来实现这个目的:

public void AddChild(ChildEntity child)
{
   this.Children.Add(child);
   child.Parent = this;
}

NHibernate根据ChildEntity类中的映射属性在Child表中保留ParentId列。一对多关系的定义仅允许NHibernate根据此列中的值从数据库加载集合

答案 1 :(得分:0)

我遇到了同样的问题,需要让nHibernate公开外键列,或者通过集合在类中进行。

问题:nHibernate创建集合对象(例如IList),你不能覆盖或监听基本集合的添加事件。

这只是一个问题,因为它是WCF RIA Services框架所必需的。

相关问题