NHibernate Таблица для загрузки класса - неправильный тип

У меня проблема с отображением иерархии таблиц по классам в Fluent / NHibernate. При извлечении записей из базы данных я все время получаю сообщение об ошибке (исключение неправильного типа)

Объект с идентификатором: 2445763 не относится к указанному подклассу: ClassA (загружаемый объект имеет неправильный класс [ClassB]) (запись 2445763 имеет имеют значение «2» в столбце Тип)

В моем домене у меня есть EntryBase, ClassA и ClassB. Классы определены как

public abstract class EntryBase 
{
    public virtual int Id {get;set;}
    public virtual string CommonProperty1 {get;set;}
    *... (lots of other common properties)*
    public virtual string CommonPropertyN {get;set;}
}

public class ClassA : EntryBase 
{
    public virutal string ClassAOnlyProperty {get;set;}
}

public class ClassB : EntryBase 
{
    public virutal string ClassBOnlyProperty {get;set;}
    public virutal int ClassBOnlyOtherProperty {get;set;}
}

Отображения:

public class EntryBaseMap : ClassMap<EntryBase>
{
    public EntryBaseMap()
    {
        Table("MySingleTable");
        Id(x => x.Id, "RecordId").GeneratedBy.Identity();
        Map(x => x.CommonProperty1, "Field1Name");
        ...
        Map(x => x.CommonPropertyN, "FieldNName");
        DiscriminateSubClassesOnColumn<string>("Type");
    }
}

public class ClassAMap : SubclassMap<ClassA>
{   
    public ClassAMap()
    {
        DiscriminatorValue("1");
        Map(x => x.ClassAOnlyProperty);
    }
}

public class ClassBMap : SubclassMap<ClassB>
{   
    public ClassBMap()
    {
        DiscriminatorValue("2");
        Map(x => x.ClassBOnlyProperty);
        Map(x => x.ClassBOnlyOtherProperty);
    }
}

Есть идеи, что может быть не так? Я правильно смог сохранить записи класса B, но когда я их извлекаю, он пытается загрузить их как класс A. Это проблема сопоставления?

5
задан reallyJim 10 October 2011 в 13:45
поделиться