我有一個場景,我正在使用nhibernate將記錄從一個表映射到基於鑑別器的幾個不同的派生類。處理其中不存在Nhibernate子類的情況
public class BaseClass { }
public class DerivedClass0 : BaseClass { }
public class DerivedClass1 : BaseClass { }
public class DerivedClass2 : BaseClass { }
我然後使用NHibernate的DiscriminateSubClassesOnColumn()方法和改變的結構包括
<subclass name="DerivedClass0" extends="BaseClass" discriminator-value="discriminator0" />
<subclass name="DerivedClass1" extends="BaseClass" discriminator-value="discriminator1" />
<subclass name="DerivedClass2" extends="BaseClass" discriminator-value="discriminator2" />
,使得被映射時,這些類被鑄造到他們的派生類和不BaseClass的。
但是,我的數據庫中有一些記錄有一個鑑別器,它沒有相應的子類。在這些情況下,NHibernate的拋出一個錯誤:
"Object with id: 'xxx' was not of the specified subclass..."
是否有某種方式,我可以解決這個問題,讓不具有相應的子類的任何記錄轉換爲BaseClass的,而不是錯誤被拋出?
我儘可能簡化了上述內容,但值得注意的是,XML是動態編輯的,這就是爲什麼我同時引用流利的nhibernate [DiscriminateSubClassesOnColumn()]和XML。
以下的事情(這將有助於)是不是一種選擇:
- 我不能更正數據,以去除無效
- 我不能創造這些記錄的子類不具有一個 記錄
我需要處理nHibernate試圖在鑑別器上映射並發現一個不存在的情況。