NHibernate: Как я могу объединить поля из двух классов? - PullRequest
2 голосов
/ 29 октября 2008

Вот упрощенная версия моей модели базы данных. У меня есть две таблицы: «Изображение» и «HostingProvider», которые выглядят так:

[Изображение]

  • ID
  • имя файла
  • hostingprovider_id

[HostingProvider]

  • ID
  • base_url

Image HostingproviderId - это отношение внешнего ключа многие-к-одному к таблице HostingProvider. (У каждого изображения есть один хостинг-провайдер).

По сути, я хочу, чтобы мой класс Image выглядел так:

[Изображение]

  • Id
  • base_url
  • имя файла

Как в NHibernate создать файл сопоставления, который будет объединять base_url из таблицы HostingProvider в класс Image?

Ответы [ 2 ]

2 голосов
/ 29 октября 2008

То, что вы ищете, это:

http://ayende.com/Blog/archive/2007/04/24/Multi-Table-Entities-in-NHibernate.aspx

Вот пример того, как это выглядит:

<class name="Person">

       <id name="Id" column="person_id" unsaved-value="0">

              <generator class="native"/>

       </id>



       <property name="Name"/>

       <property name="Sex"/>



       <join table="address">

              <key column="address_id"/>

              <property name="Address"/>

              <property name="Zip"/>

              <property name="Country"/>

              <property name="HomePhone"/>

              <property name="BusinessPhone"/>

       </join>

</class> 
0 голосов
/ 29 октября 2008
public class Image {
    public virtual HostingProvider HostingProvider { get; set; } // NHibernate takes care of this
    public virtual string BaseUrl { get { return HostingProvider.BaseUrl; } }
}
...