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、従業員プロパティにカスケードとしてフラグを立てる必要があります。

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 に答える