0

我正在尝试映射一个如下所示的类层次结构:

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

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

.IgnoreBase<A>()

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

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

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

有谁知道如何解决这个问题?

4

1 回答 1

3

如果您不映射 A 类,则 B 和 C 类将不是子类。它们只是两个完全没有联系的类。NHibernate 对 A 类一无所知,那么 NHibernate 应该如何知道如何处理对 A 类的引用呢?

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

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

于 2011-11-02T08:20:15.727 回答