如何使用FNH为子类设置区分列类型?

时间:2010-09-01 14:33:23

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

FNH映射中的新SetAttribute()是什么?我需要在子类上设置我的鉴别器值,因为String不是首选 - old post

NH 2.1.2.4000,FNH 1.1.0.689

public class BaseBuildingMap : ClassMap<BaseBuilding>
{
    public BaseBuildingMap()
    {
        Id(x => x.Id);
        DiscriminateSubClassesOnColumn<int>("BuildingType", -1);
    }
}

public class PowerStationMap : SubclassMap<PowerStation>
{
    public PowerStationMap()
    {
        Map(x => x.ElectricityProduction);
    }
}

NHibernate.MappingException:无法将鉴别器值格式化为实体的SQL字符串Model.Test.PowerStation ---&gt; System.FormatException:输入字符串的格式不正确。

我需要设置SetAttribute("discriminator-value", "-1");,但没有这样的方法。

编辑1

问题:如何设置子类与FNH的区别列类型?

2 个答案:

答案 0 :(得分:2)

public class PowerStationMap : SubclassMap<PowerStation>
{
    public PowerStationMap()
    {
        DiscriminatorValue((int)1);
        Map(x => x.ElectricityProduction);
    }
}

我终于找到了回答,这是

SubclassMap<T>::DiscriminatorValue(object discriminatorValue);

答案 1 :(得分:1)

来自Fluent NHibernate 1.0 Release Notes

  

删除了SetAttribute - SetAttribute是一种权宜之计,当我们不支持他们需要的属性时,允许人们使用Fluent NHibernate。我们现在已经花了很长时间来支持流畅界面中的所有主要属性,因此您不再需要它。如果您需要我们遗漏的任何属性,请告诉我们(或者更好的是,向我们发送拉取请求/补丁)