Я только что нашел это (http://wiki.fluentnhibernate.org/Fluent_mapping#Components):
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Child : Parent
{
public string AnotherProperty { get; set; }
}
Если вы хотите отобразить это как таблицу на подкласс, вы бы сделали это так:
public class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
Id(x => x.Id);
Map(x => x.Name);
}
}
public class ChildMap : SubclassMap<Child>
{
public ChildMap()
{
Map(x => x.AnotherProperty);
}
}
Похоже, что этот подход не требует каких-либо изменений в БД, таких как добавление специальных полей в мои таблицы. Единственная проблема в том, что я не знаю, как сделать то же самое в AutoMapping с операторами Override. Мы делаем отображениевот так:
public class AutoMappingConfiguration : DefaultAutomappingConfiguration
{
public override bool IsDiscriminated(Type type)
{
return true;
}
public override bool ShouldMap(Type type)
{
return type.In(typeof(MyBaseClass),typeof(MyClass),...)
}
...
}
FluentNHibernate.Automapping.AutoPersistenceModel Instance =
AutoMap.AssemblyOf<MyBaseClass>(new AutoMappingConfiguration())
.Override<MyBaseClass>(m =>
{
...
}
}
Так что я не уверен, как применить инструкцию подкласса в моем случае. Любой совет?
Спасибо.