2010-06-30 120 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) 
    } 
}