我在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