Так что я хотел бы иметь BaseEntity, который содержит общие столбцы, которые появляются во всех таблицах и используют наследование, чтобы хранить сопоставление этих полей в одном месте. Для простоты я включу только одно поле (Id). Код выглядит следующим образом:
[Serializable]
public abstract class BaseEntity
{
public Guid Id { get; set; }
}
public class Hedge : BaseEntity
{
public virtual DateTime HedgeDate { get; set; }
public virtual DateTime SettleDate { get; set; }
}
public class Trade : BaseEntity
{
public virtual DateTime TradeDate { get; set; }
public virtual DateTime SettleDate { get; set; }
}
Отображение выглядит следующим образом:
public class BaseEntityMap : ClassMap<BaseEntity>
{
public BaseEntityMap()
{
Id(x => x.Id).GeneratedBy.GuidComb();
UseUnionSubclassForInheritanceMapping();
}
}
public class HedgeMap : SubclassMap<Hedge>
{
public HedgeMap()
{
Map(x => x.HedgeDate);
Map(x => x.SettleDate);
}
}
public class TradeMap: SubclassMap<Trade>
{
public TradeMap()
{
Map(x => x.TradeDate);
Map(x => x.SettleDate);
}
}
Для загрузки конфигурации я использую следующий код:
Configuration cfg =
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(TestDatabaseConnection.ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<HedgeMap>()
).BuildConfiguration();
Теперь, когда я запускаю свои модульные тесты, конфигурация загружается и успешно создается, но конфигурация пуста (нет карт классов). Насколько я могу судить, я следую документации, доступной на сайте fluent-nhibernate. Кто-нибудь знает, что я делаю не так?