流畅的nHibernate抽象类(非)映射问题

时间:2009-12-14 14:29:32

标签: inheritance fluent-nhibernate nhibernate-mapping abstract-class

我有一个基类,它有2个派生类。

每个派生类都有一个映射文件(它们的基类有非,它是抽象的)

每个派生类都有一个指向自身的对象(在基类中定义);

class Base
{
   Base myManager;
}
class Derived1 : Base
{

}

Class Derived2 : Base
{
}

对于每个派生类,都有一个映射:

Map(x=>x.myManager, "ManagerID");

但是Fluent无法创建SessionFactory,因为x.myManager指向未映射的类(Base)

我不想用 派生类中的Derived1 myManager和Derived2 myManager,因为使用这些类的其他类只知道基类的属性。

任何想法如何解决这种情况?

1 个答案:

答案 0 :(得分:2)

您需要为基类创建映射:

public class BaseMap : ClassMap<Base>
{
    public BaseMap()
    {
        References(x => x.myManager, "ManagerID");
    }
}

然后将其他类映射为子类:

public class Derived1Map : SubclassMap<Derived1>
{
    public Derived1Map ()
    {
        // other mapping here...
    }
}