powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate. Использовать ли наследование?
1 сообщений из 1, страница 1 из 1
NHibernate. Использовать ли наследование?
    #36580838
YK13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем дорого времени суток.
Вот хотел бы поэлегантнее решить проблему.
Имеется класс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public  abstract class  Customer
{
  protected string id;
  public virtual string Id
  {
    get { return id; }
    set { id = value; }
  }
}

У него имеется наследник

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public  class Person : Customer
{
  protected string name1;
  public virtual string Name1
  {
    get { return name1; }
    set { name1 = value; }
  }
 
  protected string name2;
  public virtual string Name2
  {
    get { return name2; }
    set { name2 = value; }
  }
 
  string surname;
  public virtual string Surname
  {
    get { return surname; }
    set { surname = value; }
  }
}

Соответственно имеются таблицы
CUSTOMERS
Имеющая только столбец ID

И таблица PERSONS со столбцами ID, C_NAME_1, C_NAME_2, C_SURNAME
Вот такой маппинг
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<class name="MyAssembly1.Customer, MyAssembly1" table="CUSTOMERS">
    <id name="Id" column="ID">
      <generator class="assigned" />
    </id>
    <joined-subclass name=" MyAssembly1.Person, MyAssembly1" table="PERSONS">
      <key column="ID"/>
      <property name="Name1" column="C_NAME_1" type="System.String"/>
      <property name="Name2" column="C_NAME_2" type="System.String"/>
      <property name="Surname" column="C_SURNAME" type="System.String"/>
    </joined-subclass>
</class> 
Проблема в следующем.
Мне необходим Некий класс назовем его PersonExt, который наследует Person, но имеет в своем составе еще дополнительные свойства-коллекции хранящиеся в других таблицах (например почтовые адреса итд). Если я делаю этот класс наследником Person, то естественно при выборе всех Customer или Person все объекты типа Person будут в действительности объектами типа PersonExt. Можно ли как то избежать этого? Я вижу решение лишь в создании еще одной линии наследования похожей на ту что описана выше, но уже для классов с дополнительеыми свойствами. Но в этом случае PersonExt не будет наследовать Person и соответственно Customer. Тоесть по сути дела будет создано две похожии ветви классов. Я нахожу это не очень хорошим решением и поэтому хотел бы услышать мнение о возможности другого решения этой задачи.
Заранее благодарен за советы
С уважением
YK13
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate. Использовать ли наследование?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]