0

我知道在使用无状态会话时,必须明确保存对象关联(子)

如果我有以下对象:

public class Parent()
{
    public int Id {get;set;}
    public string Name {get;set;}
    public IList<Child> Childs {get;set;}
}

public class Child()
{
    public int Id {get;set;}
    public string Name {get;set;}
}

我修改了一个父实例并向其添加一个子实例,然后使用以下语句保存父子实例:

statelesssession.Update(parentInstance);
statelesssession.Insert(parentInstance.Childs.Last());

这样做会成功更新父记录并创建子记录,但是子表中的字段 Parent_Id 保持为空,因此不记录关联。

如何使用无状态会话手动记录关联?

4

1 回答 1

0

我没有看到指向返回的many-to-one属性。这就是 NHibernate 用来保存列的方法。你需要:ChildParentParent_id

public class Child
{
    public int Id {get;set;}
    public Parent Parent {get;set;} // this is missing
    public string Name {get;set;}
}

...以及相应的 NHibernate 映射。另外,请确保您设置了child.Parent将孩子添加到父母时的值。

另一件事,考虑到您描述的事件序列(“我创建了一个 parent 实例并向其添加一个孩子”),我本来希望看到一个Insertfor parent 而不是Update.

于 2011-09-08T21:15:34.993 回答