Наши сущности обладают группой общих свойств. Чтобы уменьшить повторяющееся сопоставление, я создал базовую карту ClassMap, которая отображает идентификаторы и общие свойства. Для ClassMap каждой сущности я просто подклассифицирую базу, и она отлично работает. Для нового проекта мы также позволяем NH сгенерировать для нас схему БД. Проблема в том, что порядок столбцов таков, что сначала отображаются свойства из базового ClassMap, а затем все, что отображается в подклассе. Требование для этой сборки состоит в том, чтобы столбцы располагались в определенном порядке.
Чтобы обойти это, я сделал следующее.
public class BaseMap<T> : ClassMap<T> where T : Entity
{
public BaseMap()
{
Id(x => x.Id);
MapEntity();
Map(x => x.CommonProperty1);
Map(x => x.CommonProperty2);
Map(x => x.CommonProperty3);
}
protected virtual void MapEntity()
{
}
}
public class SomeEntityMap : BaseMap<SomeEntity>
{
public SomeEntity()
{
base.MapEntity();
}
protected override void MapEntity()
{
Map(x => x.SomeEntityProperty1);
Map(x => x.SomeEntityProperty2);
Map(x => x.SomeEntityProperty3);
}
}
Это работает, но похоже на взлом. Помимо фактора взлома, есть ли здесь что-нибудь, что может вызвать проблемы?