流畅的NHibernate - 如何使用枚举器来识别子类?

时间:2010-02-03 22:35:52

标签: nhibernate fluent-nhibernate join enums subclass

我试图映射以下类:

public abstract class ScheduleType
{
    public virtual int Id { get; set; }
    public virtual TypeDiscriminatorEnum Discriminator { get; set; }
}

public class DerivedScheduleType : ScehduleType
{
    public virtual bool MyProperty { get; set; }
}



public class ScheduleTypeMap : ClassMap<ScheduleType>
{
    public ScheduleTypeMap()
    {
        Id(p => p.Id);
        Map(p => p.Discriminator).CustomType<TypeDiscriminatorEnum>().Not.Nullable();
    }
}

public class DerivedScheduleTypeMap : SubclassMap<DerivedScheduleType>
{
    public DerivedScheduleTypeMap()
    {
        //DiscriminatorValue(TypeDiscriminatorEnum.DerivedSchedule);
        Map(p => p.MyProperty);
    }
}

问题是ScheduleType上的查询与所有派生表连接以找到正确的表。

我需要向NHibernate说明只能与代表正确子类的表连接的东西。

任何sugestions?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用DiscriminateSubClassesOnColumn<TypeDiscriminatorEnum>("discriminator")代替Map(p => p.Discriminator)

我不太确定你想要实现的目标,因为你正在谈论加入其他桌子;鉴别符不与table-per-subclass一起使用,只在table-per-class-hierarchy中使用。