3

我正在使用基于 NHibernate 约定的映射,并且正在尝试解决如何映射多级继承结构

如果我有以下类结构

class ClassA

class ClassB : ClassA

class ClassC : ClassB

我希望所有三个类都代表一个表 - 数据库中的“ClassC”

在我的配置中,我将 ClassA 定义为 RootEntity

(如此处所述:http: //fabiomaulo.blogspot.co.nz/2011/04/nhibernate-32-mapping-by-code_13.html

public static void WithConventions(this ConventionModelMapper mapper, Configuration configuration)
{
    var baseEntityType = typeof(ClassA);
    mapper.IsRootEntity((type, declared) => baseEntityType.Equals(type.BaseType));

    ...
}

生成的架构然后为 ClassB 和 ClassC 创建单独的表,它们都包含在 ClassA 中定义的字段

4

1 回答 1

0

在 ModelInspector 中,您必须为方法 IModelInspector.IsTablePerClassHierarchy 返回 true。这将使所有类都存储在同一个表中。

于 2014-11-05T10:01:52.750 回答