我们使用每个子类的表映射来映射以下域对象:
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 表有约束)。User
Manager
User
同样,我不确定如何将用户“升级”到Manager
. 由于我不能向上转换,我猜我需要创建一个Manager
与现有实例具有相同身份的新实例User
?
我的子类映射Manager
如下所示:
public class ManagerMap : SubclassMap<Manager>
{
public ManagerMap()
{
Table("Managers");
KeyColumn("UserId");
Map(n => n.EmploymentType);
Map(n => n.PriorityLevel);
}
}