Nos entités ont un groupe de propriétés communes. Afin de réduire le mappage répétitif, j'ai créé une ClassMap de base qui mappe les identités et les propriétés communes. Pour chaque ClassMap d'entité, j'ai simplement sous-classé la base et cela fonctionne parfaitement. Pour un nouveau projet, nous laissons également NH générer le schéma de la base de données pour nous. Le problème est que l'ordre des colonnes est tel que les propriétés de la ClassMap de base apparaissent en premier, suivies de tout ce qui est mappé dans la sous-classe. L'exigence pour ce build est que les colonnes apparaissent dans un ordre spécifique.
Pour contourner ce problème, j'ai fait ce qui suit.
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);
}
}
Cela fonctionne, mais ressemble à un piratage. Mis à part le facteur "piratage", y a-t-il quelque chose ici qui pourrait être problématique ?