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