代码之家  ›  专栏  ›  技术社区  ›  Dani

fluent-nhibernate抽象类(非)映射问题

  •  1
  • Dani  · 技术社区  · 15 年前

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

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

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

    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 回复  |  直到 15 年前
        1
  •  2
  •   David M    15 年前

    您需要为基类创建一个映射:

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

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

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