我們正在映射使用表,每個子類映射下列域對象:NHibernate的升級/降級從子類
class User {
Id;
FirstName;
LastName;
etc.
}
class Manager : User {
// manager specific properties
}
當在用戶界面中創建一個新的User
我們檢查,看看是否Manager
角色有已被選中並且必要時創建(並保存)Manager
的實例而不是User
。
目標是儘可能簡單地轉換User
到Manager
的過程(只需選擇一個角色)。
當我試圖通過去除Manager
NHibernate的降級一個Manager
到User
拋出異常,因爲它正試圖除去User
記錄,以及(其具有在角色表約束)。
同樣,我不知道如何將用戶「升級」到Manager
。由於我不能上演我猜我需要創建一個新的Manager
實例與現有的User
具有相同的身份?
我對Manager
子映射可以在下面看到:
public class ManagerMap : SubclassMap<Manager>
{
public ManagerMap()
{
Table("Managers");
KeyColumn("UserId");
Map(n => n.EmploymentType);
Map(n => n.PriorityLevel);
}
}
NHibernate將對象映射到/來自關係數據庫。你能改變內存中對象的類型嗎?不,因此NHibernate對此沒有任何規定。 –