У наших организаций есть группа общих свойств. Чтобы уменьшить количество повторяющихся отображений, я создал базовый ClassMap, который отображает идентичности и общие свойства. Для каждого объекта ClassMap я просто делю основание на подклассы, и это прекрасно работает. Для нового проекта мы также позволяем NH сгенерировать схему DB для нас. Проблема в том, что порядок столбцов таков, что свойства из базового 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);
}
}
Это работает, но похоже на взлом. Помимо фактора взлома, есть ли здесь что-то, что может быть проблематичным?