Table-per-subclass マッピングを使用して、次のドメイン オブジェクトをマッピングしています。
class User {
Id;
FirstName;
LastName;
etc.
}
class Manager : User {
// manager specific properties
}
UI で新しいUser
が作成されると、役割が選択されているかどうかを確認し、必要に応じてではなくManager
のインスタンスを作成 (および保存) します。Manager
User
User
目標は、から への変換プロセスをManager
できるだけ単純にすることです (役割を選択するだけです)。
NHibernate を削除してaManager
を aにダウングレードしようとすると、レコードも削除しようとしているため (Roles テーブルに制約があります)、例外がスローされます。User
Manager
User
同様に、ユーザーを に「アップグレード」する方法がわかりませんManager
。アップキャストできないのでManager
、既存のものと同じ ID で新しいインスタンスを作成する必要があると思いUser
ますか?
のサブクラス マッピングをManager
以下に示します。
public class ManagerMap : SubclassMap<Manager>
{
public ManagerMap()
{
Table("Managers");
KeyColumn("UserId");
Map(n => n.EmploymentType);
Map(n => n.PriorityLevel);
}
}