我有:
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)
有什么想法吗?
答案 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映射中。将映射设置为反向。这意味着孩子控制着保存。