NHibernate(参考资料)OneToMany

时间:2012-12-10 17:44:30

标签: nhibernate

我有:

DailyWorkTimeMapping()
{
....
     References(x => x.Employee);
}

所以,当我这样做时:

var x = new DailyWorkTime()
{
    Employee = new Employee()
       {
          Id = IdFromAnExistingEmployee,
       };

}

当我致电SaveOrUpdate时,我收到以下错误:

  

NHibernate.TransientObjectException:object引用未保存的   瞬态实例 - 在刷新或保存之前保存瞬态实例   将属性的级联操作设置为可以创建它的东西   自动保存。键入:ProjectTracker.Domain.Employees.Employee,实体:   ProjectTracker.Domain.Employees.Employee bei   NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsaved(字符串   entityName,Object entity,ISessionImplementor session)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果您尝试在DailyWorkTime实例上调用save,则需要将Employee属性标记为级联。

References(x => x.Employee).Cascade.All();

或者,您可以在保存Employee

之前保存DailyWorkTime对象
var normalHours = new DailyWorkTime();
normalHours.Employee = new Employee() { Id = 1234};
session.SaveOrUpdate(normalHours.Employee);
session.SaveOrUpdate(normalHours);

答案 1 :(得分:0)

在您从Employee表上的OneToMany映射中。将映射设置为反向。这意味着孩子控制着保存。