Не могу заставить Fluent nHibernate работать с подклассами - PullRequest
0 голосов
/ 11 января 2012

Так что я хотел бы иметь 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. Кто-нибудь знает, что я делаю не так?

...