NHibernate组件继承

NHibernate组件继承,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,是否可以使用NHibernates组件进行继承?一个快速的google只返回了一手合适的结果(所有的博客),所有的结果都是前一段时间写的,所以我想知道它是否可用 如果不是,您如何处理它呢?目前不可能。如果您需要继承,您必须映射一个实体。除了Diego所说的之外,还可以使用IUserType为层次结构实现自定义水合/脱水。有关详细信息,请参见(它的Java,但在C#中可以使用相同的机制) 并且Hibernate特性请求是。NHibernate版本是,请投票。是 public class A { }

是否可以使用NHibernates组件进行继承?一个快速的google只返回了一手合适的结果(所有的博客),所有的结果都是前一段时间写的,所以我想知道它是否可用


如果不是,您如何处理它呢?

目前不可能。如果您需要继承,您必须映射一个实体。

除了Diego所说的之外,还可以使用IUserType为层次结构实现自定义水合/脱水。有关详细信息,请参见(它的Java,但在C#中可以使用相同的机制)

并且Hibernate特性请求是。NHibernate版本是,请投票。

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)
    }
}
公共类A{}
公共B类:A{}
公共密封C类:B{}
公共抽象类BaseAMap:ComponentMap,其中T:A{
公共BaseAMap(){
//在这里画一张地图
}
}
公共类AMap:BaseAMap{
}
公共类BaseBMap:BaseAMap,其中T:B{
公共基映射(){
//地图B(不包括A)
}
}
公共类BMap:BaseBMap{
}
公共密封类CMap:BaseBMap{
公共CMap(){
//地图C(不包括B)
}
}

具体来说,您想做什么来要求NHibernate注意继承?是的,即使您阅读了OOP中“组件”的定义,对组件进行继承也毫无意义