Свободный nHibernate Абстрактный класс (не) проблема отображения - PullRequest
1 голос
/ 14 декабря 2009

У меня есть базовый класс, в котором есть 2 производных класса.

У каждого производного класса есть файл отображения (у базового класса он не равен, и он абстрактный)

Каждый производный класс имеет объект, который указывает на себя (который определен в базовом классе);

class Base
{
   Base myManager;
}
class Derived1 : Base
{

}

Class Derived2 : Base
{
}

для каждого производного класса есть отображение:

Map(x=>x.myManager, "ManagerID");

Но Fluent не может создать SessionFactory, так как x.myManager указывает на несопоставленный класс (Base)

я не хочу использовать Derived1 myManager и Derived2 myManager в производных классах, так как другие классы, использующие эти классы, знают только о свойствах базового класса.

Есть идеи, как разрешить эту ситуацию?

1 Ответ

2 голосов
/ 14 декабря 2009

Вам нужно будет создать отображение для базового класса:

public class BaseMap : ClassMap<Base>
{
    public BaseMap()
    {
        References(x => x.myManager, "ManagerID");
    }
}

, а затем сопоставить другие классы как подклассы:

public class Derived1Map : SubclassMap<Derived1>
{
    public Derived1Map ()
    {
        // other mapping here...
    }
}
...