据我所知,在使用无状态会话时,必须明确保存对象关联(子)
如果我有以下物品:
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保持为空,因此不会记录关联。
如何使用无状态会话手动记录关联?
答案 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
}}