流畅的Nhibernate AutoMapping继承和忽略抽象属性

时间:2011-01-26 09:26:22

标签: nhibernate fluent-nhibernate automapping

我有一个成功映射的继承结构

产品(基础)

PdfProduct(继承自产品)& OtherProduct(继承自产品)

这些工作正常,我之前用hmb.xml文件做过类似的事情。

在之前的项目中,当我试图找出产品的类型时,我遇到了问题,但我不能这样做,因为它是代理(产品是PdfProdcut)。

为了解决这个问题,我在基础产品中添加了一个抽象属性,并在返回枚举器的其他类中重写了它。

当我使用xml映射执行此操作时,我只是没有映射Type列,一切都很顺利。

现在我正在尝试自动映射继承的关系,它会自动将abstract属性映射到子类,但这不是必需的,因为它不在数据库中。

我是怎么告诉它忽略这些的?由于子关系没有得到映射,我不知道在哪里放置ignore语句。

任何帮助都会得到很好的接受。

1 个答案:

答案 0 :(得分:2)

Fluent NHibernate有一个可以在设置中使用的忽略proprty方法:

.ForTypesThatDeriveFrom<Product>(p => p.IgnoreProperty(x => x.Type))

顺便说一下,我们通过向基类添加Self属性来解决这个问题。此属性将始终返回正确的(非代理)类型:

    public virtual Product Self
    {
        get { return this; }
    }