Подкласс Subclass бегло nHibernate - PullRequest
1 голос
/ 16 декабря 2009

Моя модель выглядит так:

public class SelectionItem : BaseEntity // BaseEntity ==> id, timestamp stuff
{//blabla}

public class Size : SelectionItem
{//blabla}

public class Adultsize : Size
{//blabla}

Я бы хотел использовать метод иерархии классов для каждой таблицы свободно используемого nhibernate

public class SelectionItemMap : BaseEntityMap<Entities.SelectionItem.SelectionItem>
{
    public SelectionItemMap()
    {
        Map(x => x.Name);
        Map(x => x.Picture);
        Map(x => x.Code);
        DiscriminateSubClassesOnColumn("SelectionItemType");
    }
}

и сбросьте DiscriminateSubClassesOnColumn в следующем подклассе:

public class SizeMap : SubclassMap<Size>
{
    DiscriminateSubClassesOnColumn("SizeType")
}

public Adultsize : SubclassMap<Adultsize>
{}

Но это не работает.

Я нашел решение в сети: текст ссылки но этот метод амортизируется в соответствии с Решарпер.

Как это решить? спасибо за дополнительную информацию.

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Это не работает, DiscriminateSubClassesOnColumn () недоступно в SubclassMap.

1 голос
/ 16 декабря 2009

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

Попробуйте что-то вроде этого:

    public class SelectionItem : ClassMap<SelectionItem>
    {
        public SelectionItem()
        {
            Id(x => x.Id);
            DiscriminateSubClassesOnColumn("SelectionItemType");
        }
    }

    public class Size : SubclassMap<Size>
    {
        public Size()
        {
             DiscriminatorValue("Size")
             DiscriminateSubClassesOnColumn("SizeType");
        }
    }

    public class Adultsize : SubclassMap<Adultsize>
    {
        public Adultsize()
        {
             DiscriminatorValue("Adult")
        }
  }
0 голосов
/ 18 августа 2010

Вам не нужно добавлять DiscriminateSubClassesOnColumn () в SubclassMap. Он принимает имя класса в качестве значения дискриминатора.

Правильная версия кода

public class SelectionItem : ClassMap<SelectionItem>
{
    public SelectionItem()
    {
        Id(x => x.Id);
        DiscriminateSubClassesOnColumn("SelectionItemType");
    }
}

public class Size : SubclassMap<Size>
{
}

public class Adultsize : SubclassMap<Adultsize>
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...