Отображение NHibernate для подклассов и объединенных подклассов - PullRequest
3 голосов
/ 19 апреля 2010

В проекте, над которым я работаю, у меня есть следующие объекты: Аналитик , Клиент и Подрядчик . Каждый наследует от базового класса Пользователь .

public abstract class User {
    public virtual int Id { get; set; }
    public virtual string Username { get; set; }
    public virtual string FullName { get; set; }
}

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

public class Analyst : User {
    // Empty class. There are no additional properties for an analyst.
}

public class Client : User {
    // Empty class. There are no additional properties for a client.
}

public class Contractor : User {
    public int TotalJobs { get; set; }
    public int JobsInProgress { get; set; }
}

Для вышеперечисленных классов у меня есть следующая структура таблицы:

USER
----
UserId
Username
FullName
UserType (1 = Analyst, 2 = Client, 3 = Contractor)


CONTRACTOR
----------
UserId
TotalJobs
JobsInProgress

Нет таблиц для классов Analyst и Client.

Я хотел бы знать, как я могу написать файл отображения NHibernate для класса Contractor. Для других классов я создал файл сопоставления пользователей и добавил Client и Analyst в качестве подклассов. Как я могу сопоставить класс Исполнителя?

Ответы [ 2 ]

2 голосов
/ 19 апреля 2010

Это идеально подходит для подхода, описанного в 8.1.4. Смешивание таблицы по иерархии классов с таблицей по подклассу

<subclass name="Contractor" discriminator-value=3>
  <join table="CONTRACTOR">
    <key column="UserId"/>
    <property name="TotalJobs"/>
    <property name="JobsInProgress"/>
  </join>
</subclass>
1 голос
/ 19 апреля 2010

Вы пробовали подкласс на подклассе? http://www.javalobby.org/java/forums/t18300.html

...