Я недавно запустил Asp Net Core проект с NHibernate в качестве orm. У меня определенно мало опыта с NHibernate. Я ищу эквивалент для аннотации @MappedSuperclass Hibernate. Либо я не могу найти хорошее решение, либо я не могу использовать найденное. Но с самого начала: каждая из моих сущностей наследует от базового класса BaseEntity, содержащего несколько технических полей / столбцов
public class BaseEntity
{
public virtual long id { get; set; }
public virtual DateTime inDate { get; set; }
public virtual DateTime? outDate { get; set; }
//some other properies
}
public class AnyClass : BaseEntity
{
//some AnyClass properties
}
public class AnyClassMap : ClassMapping<AnyClass>
{
public AnyClassMap()
{
Table("any_table");
//Copy/Paste to each mapping class
Id(b => b.id, x => { x.Column("id"); x.Generator(Generators.Native); x.Type(NHibernateUtil.Int64); });
Property(b => b.inDate, x => { x.Column("in_date"); });
Version(b => b.outDate, x => { x.Column("out_date"); x.Type(NHibernateUtil.DbTimestamp); });
//Some other BaseEntity properties
//some AnyClass properties
}//ctor
}
В каждом классе сопоставления я повторяю сопоставления о свойствах базового класса. Однако я хотел бы добиться чего-то похожего на:
public class BaseEntityMap : MappedSuperclassEquvalent<BaseEntity>
{
public BaseEntityMap()
{
Id(b => b.id, x => { x.Column("id"); x.Generator(Generators.Native); x.Type(NHibernateUtil.Int64); });
Property(b => b.inDate, x => { x.Column("in_date"); });
Version(b => b.outDate, x => { x.Column("out_date"); x.Type(NHibernateUtil.DbTimestamp); });
//Some other BaseEntity properties
}//ctor
}
public class AnyClassMap : ClassMapping<AnyClass>
{
public AnyClassMap()
{
Table("any_table");
//example only
IncludeMapping(BaseEntityMap.Class);
//some AnyClass properties
}//ctor
}
Я знаю, что могу использовать BaseEntity в качестве ComponentMapping, а затем использовать его в классе AnyClass в качестве свойства. Тем не менее, ComponentMapping не разрешает отображение идентификатора и версии. С другой стороны, по многим причинам я забочусь о наследовании от базовой сущности.
Заранее спасибо