我试图映射以下类:
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?
提前致谢!
答案 0 :(得分:1)
使用DiscriminateSubClassesOnColumn<TypeDiscriminatorEnum>("discriminator")
代替Map(p => p.Discriminator)
。
我不太确定你想要实现的目标,因为你正在谈论加入其他桌子;鉴别符不与table-per-subclass一起使用,只在table-per-class-hierarchy中使用。