不使用表

时间:2018-01-27 05:18:33

标签: c# .net inheritance nhibernate fluent-nhibernate

我在进行继承映射时遇到问题,这是我的类图的一小部分:

Model Schema

现在,我的模型User扩展了AuditableSoftDeletableModel。此User模型具有要映射的表。所以我想,而不是我在每个类中重写所有Id(x => x.Id)(可能还有其他基本字段,如createdAtupdatedAt)块代码,我将编写映射类在我的类图中完全相同的结构,并让定义模型(在这种情况下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。这就像我通过的类没有被检测到,或者我做错了。

我做错了吗?或者也许有更好的方法来解决这个问题?

编写每个要映射的字段是一项非常麻烦的任务,因为我得到了很多要映射的字段的表,更不用说表之间的所有关系了。

任何建设性的答案,解决方案,论点和评论都非常受欢迎,因为我现在还在学习。

谢谢 - 雷

0 个答案:

没有答案