Свободный NHibernate - Как использовать перечислитель для определения подкласса? - PullRequest
1 голос
/ 04 февраля 2010

Я пытаюсь отобразить следующие классы:

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 для объединения только с таблицей, которая представляет правильный подкласс.

Любые предложения?

Заранее спасибо!

1 Ответ

1 голос
/ 04 февраля 2010

Используйте DiscriminateSubClassesOnColumn<TypeDiscriminatorEnum>("discriminator") вместо Map(p => p.Discriminator).

Я не совсем уверен, чего вы пытаетесь достичь, потому что вы говорите о присоединении к другим столам; дискриминаторы не используются с таблицей на подкласс, только в таблице на иерархию классов.

...