我在NHibernate中有一個場景,我在實體Employee和EmployeeStatus之間有一對多的關係。NHibernate單向,一對多映射問題
員工具有屬性,例如:ID,名稱和EmployeeStatus的IList,而對於此問題,EmployeeStatus只具有自己的ID和一些自由文本。
我不需要從EmployeeStatus持有對Employee的引用,狀態管理將完全通過Employee實體完成 - 添加到IList屬性中。 IE:我想完全可以做到以下幾點:
Employee e = new Employee();
e.Name = "Tony";
e.StatusList.Add(new EmployeeStatus("Status A"));
e.StatusList.Add(new EmployeeStatus("Status B"));
session.Save(e);
我已經試過各種方法,包括創建單向一個一對多的映射,其中逆是假的,級聯設置爲全刪除,孤兒,而這一切看起來像它應該工作,但它產生關於無法在EmployeeStatus中設置EmployeeId的例外。我被引導認爲這是因爲NHibernate想要使用EmployeeId作爲NULL的插入,然後將其更新爲父項的ID。
我想我錯過了這裏的東西,很簡單 - 任何人都可以告訴我什麼我的映射文件應該看起來像實現上述?
在此先感謝
託尼
- 編輯:繼承人的要求類的一個粗略的想法 -
public class Employee
{
private IList<EmployeeStatus> _statusList;
public Employee()
{
_statusList = new List<EmployeeStatus>();
}
public virtual int Id{ get; set; }
public virtual string Name{ get; set; }
public virtual IList<EmployeeStatus> StatusList
{
get
{
return _statusList;
}
}
}
public class EmployeeStatus
{
public virtual int Id{ get; set; }
public virtual string StatusText{ get; set; }
public EmployeeStatus()
{
}
public EmployeeStatus(string statusText)
{
StatusText = statusText;
}
}
它是一個更復雜的領域模型的一部分,但這是我一直無法工作的唯一部分,所以我已經簡化並將整個事件簡化到上面。謝謝。 – 2009-02-09 18:23:12
我可能沒有在那裏清楚解釋,但員工身份不能與多個員工關聯。它肯定是1(僱員)對許多(狀態').... – 2009-02-09 18:36:36