2010-06-30 97 views
2

是否可以使用NHibernates組件繼承?一個快速的谷歌只返回一個手中充滿了適當的結果(所有博客),所有的都是前一段時間寫的,所以想知道它是否可用?NHibernate組件繼承

如果不是,你如何處理呢?

+0

具體來說,你想要做什麼,需要NHibernate知道繼承? – apollodude217 2010-07-05 17:24:20

回答

3

目前不可能。如果你需要繼承,你必須映射一個實體。

+0

是的,即使是因爲如果你閱讀了OOP中的「組件」的定義,對組件的繼承沒有任何意義 – Raffaeu 2011-09-21 15:58:42

1

除了Diego所說的之外,還有一個選項可以使用IUserType爲層次結構實現自定義水合/脫水。有關詳細信息,請參閱this article(其Java可以在C#中使用相同的機制)。

休眠功能請求是here。 NHibernate版本是here,請投票。

0

是的。

public class A { } 

public class B : A { } 

public sealed class C : B { } 

public abstract class BaseAMap<T> : ComponentMap<T> where T : A { 
    public BaseAMap() { 
     // Map A here 
    } 
} 

public class AMap : BaseAMap<A> { 
} 

public class BaseBMap<T> : BaseAMap<T> where T : B { 
    public BaseBMap() { 
     // Map B (excluding A) 
    } 
} 

public class BMap : BaseBMap<B> { 
} 

public sealed class CMap : BaseBMap<B> { 
    public CMap() { 
     // Map C (excluding B) 
    } 
}