【发布时间】:2010-09-17 13:33:16
【问题描述】:
我们的实体有一组共同的属性。为了减少重复映射,我创建了一个映射身份和公共属性的基本 ClassMap。对于每个实体的 ClassMap,我只是将基础子类化,它工作得很好。对于一个新项目,我们还让 NH 为我们生成数据库模式。问题是,列的顺序是基类映射中的属性首先出现,然后是子类中映射的任何内容。此构建的要求是列以特定顺序出现。
为了解决这个问题,我做了以下操作。
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);
}
}
这行得通,但感觉就像一个 hack。除了 hack 因素,这里还有什么问题吗?
【问题讨论】:
标签: nhibernate fluent-nhibernate fluent