使用流畅的nhibernate映射引用的基类

时间:2011-11-02 06:02:53

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我正在尝试映射类似于以下的类层次结构:

public abstract class A { }
public class B : A { }
public class C : A { }

我不想映射A类,因为它是抽象的,我知道我可以这样做:

.IgnoreBase<A>()

不映射A并映射B和C中A的所有属性。但我的问题是我还有另一个D类,如下所示:

public class D {
  public virtual A a { get; set; }
}

现在,当我尝试使用流畅的nhibernate自动映射功能进行映射时,我得到一个错误,即类D引用了未映射的类A,尽管类A实际上是通过子类B和C映射的。

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果不映射A类,则B和C类不是子类。它们只是两个根本没有连接的类。 NHibernate对A类一无所知,那么NHibernate应该如何处理对A类的引用呢?

不映射A因为它是抽象的没有理由。您也可以映射接口。

如果向我们展示您的数据库模型(表格),也许会更清楚您想要做什么。