0

我有:

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

所以,当我这样做时:

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

}

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

NHibernate.TransientObjectException:对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例或将属性的级联操作设置为使其自动保存的内容。类型:ProjectTracker.Domain.Employees.Employee,实体:ProjectTracker.Domain.Employees.Employee bei NHibernate.Engine.ForeignKeys.GetEntityIdentifierIfNotUnsaved(String entityName, Object entity, ISessionImplementor session)

有任何想法吗?

4

2 回答 2

0

如果您尝试在DailyWorkTime实例上调用保存,则需要将 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);
于 2012-12-10T18:13:28.517 回答
0

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

于 2012-12-10T19:12:12.813 回答