我在进行继承映射时遇到问题,这是我的类图的一小部分:
现在,我的模型User
扩展了AuditableSoftDeletableModel
。此User
模型具有要映射的表。所以我想,而不是我在每个类中重写所有Id(x => x.Id)
(可能还有其他基本字段,如createdAt
和updatedAt
)块代码,我将编写映射类在我的类图中完全相同的结构,并让定义模型(在这种情况下User
,具有要映射的表)来指定要映射的表。
以下是我AbstractModelMap
的代码,用于映射AbstractModel
:
public class AbstractModelMap<T> : ClassMap<AbstractModel>
{
public AbstractModelMap()
{
Id(x => x.Id)
.Column("id")
.GeneratedBy.Native();
}
}
这是我的SoftDeletableModelMap
代码,用于映射SoftDeletableModel
:
public class SoftDeletableModelMap: AbstractModelMap<SoftDeletableModel>
{
public SoftDeletableModelMap(): base()
{
Map(x => x.Deleter);
}
}
在这里,我认为我可以继承AbstractModelMap
并传递模型类以映射为通用。
但我收到的错误是AbstractModel does not contain a definition for Deleter and no extension method Deleter accepting a first argument of type AbstractModel
我检查了属性名称,确实正确为Deleter
。这就像我通过的类没有被检测到,或者我做错了。
我做错了吗?或者也许有更好的方法来解决这个问题?
编写每个要映射的字段是一项非常麻烦的任务,因为我得到了很多要映射的字段的表,更不用说表之间的所有关系了。
任何建设性的答案,解决方案,论点和评论都非常受欢迎,因为我现在还在学习。
谢谢 - 雷