Многоуровневое наследование с использованием Loquacious Mapping по коду NHibernate - PullRequest
3 голосов
/ 07 марта 2012

Я использую сопоставление на основе соглашений 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

1 Ответ

0 голосов
/ 05 ноября 2014

В ModelInspector вы должны вернуть true для метода IModelInspector.IsTablePerClassHierarchy.В результате все классы будут храниться в одной таблице.

...