我正在尝试映射类似于以下的类层次结构:
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映射的。
任何人都知道如何解决这个问题?
答案 0 :(得分:3)
如果不映射A类,则B和C类不是子类。它们只是两个根本没有连接的类。 NHibernate对A类一无所知,那么NHibernate应该如何处理对A类的引用呢?
不映射A因为它是抽象的没有理由。您也可以映射接口。
如果向我们展示您的数据库模型(表格),也许会更清楚您想要做什么。