使用Nhibernate无状态会话更新Child ForeignKey

时间:2011-09-08 18:19:44

标签: nhibernate orm stateless-session

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

如果我有以下物品:

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保持为空,因此不会记录关联。

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

1 个答案:

答案 0 :(得分:0)

我在many-to-one上看不到指向Child的{​​{1}}属性。这就是NHibernate用于保存Parent列的内容。你需要:

Parent_id

...和相应的NHibernate映射。此外,请确保在将子项添加到父项时设置public class Child { public int Id {get;set;} public Parent Parent {get;set;} // this is missing public string Name {get;set;} } 的值。

另一件事,考虑到你描述的事件序列(“我创建一个父实例并向其中添加一个子”),我原本希望看到父{而不是child.Parent Insert }}