nhibernate: как отобразить две таблицы в один непостоянный класс? - PullRequest
2 голосов
/ 04 декабря 2009

У меня есть две похожие таблицы:

Table1:

[ id ] | [ name ]

Table2:

[ id ] | [ name ]

и мне нужно читать / записывать данные, используя только один класс:

public class TwinTable
{
   public virtual int Id { get; set; }
   public virtual string Name1 { get; set; }
   public virtual string Name2 { get; set; }
}

Кроме того, одна из таблиц может иметь или не иметь сущность с указанным Id, и обе таблицы могут иметь или не иметь сущности, поэтому Name1 может быть нулевым, а Name2 может быть нулевым, и обе они могут быть нулевыми.

Я не могу изменить структуру БД, и это не очень хорошая вещь, если мне нужно что-то добавить к ней.

Надеюсь на вашу помощь!

1 Ответ

0 голосов
/ 08 декабря 2009

Одним из решений является сопоставление Table1 с классом, а затем сопоставление Table2 как объединенного подкласса Table1. Присоединенный подкласс будет тогда похож на ваш TwinTable, как вы описали выше:

<class name="Class1" table="Table1" >
  <id name="Id" column="id">
    <generator class="identity" />
  </id>
  <property name="Name1" column="name" not-null="true" />
</class>

<joined-subclass name="Class2" table="Table2">
  <key column="Id" />
  <property name="Name2" column="name" not-null="true" />
</joined-subclass>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...