我们使用每个子类的表映射来映射以下域对象:
class User {
Id;
FirstName;
LastName;
etc.
}
class Manager : User {
// manager specific properties
}
当User在 UI 中创建新角色时,我们会检查Manager角色是否已被选中,如有必要,请创建(并保存)一个Manager而不是User.
目标是使将 a 转换为 aUser或从 a转换的过程Manager尽可能简单(只需选择一个角色)。
当我尝试通过删除NHibernate 将 a 降级Manager为 a 时,会引发异常,因为它 也在尝试删除记录(对 Roles 表有约束)。UserManagerUser
同样,我不确定如何将用户“升级”到Manager. 由于我不能向上转换,我猜我需要创建一个Manager与现有实例具有相同身份的新实例User?
我的子类映射Manager如下所示:
public class ManagerMap : SubclassMap<Manager>
{
public ManagerMap()
{
Table("Managers");
KeyColumn("UserId");
Map(n => n.EmploymentType);
Map(n => n.PriorityLevel);
}
}