NHibernate и модели с простыми массивами

#nhibernate

#nhibernate

Вопрос:

Это мой класс модели.

 public class Lead
{
    private readonly ObservableCollection<String> m_tags = new ObservableCollection<string>();

    public int LeadId { get; set; }
    public string Title { get; set; }
    public ObservableCollection<String> Tags { get { return m_tags; } }

}
  

Предлагает ли NHibernate способ представления этого при сохранении простого общедоступного API модели?

Ответ №1:

Не уверен, будет ли это работать с observable collection (возможно, потребуется отобразить как IList и обработать это за кулисами), но я думаю, вам нужно было бы сделать что-то подобное в вашем отображении:

 <class name="Lead" table="Lead">
   <!-- snip -->
   <set name="Tags" table="Tags">
       <key column="TagId" />
       <element column="TagValue" type="string" />
   </set>
</class>
  

Единственным недостатком является то, что для значений ваших тегов требуется таблица с ключами.

Однако я беспокоюсь, что один и тот же тег может отображаться в нескольких выводах. Если это так, я думаю, вы захотите определить теги как «многие ко многим» с промежуточной таблицей. Это выглядело бы примерно так (требуется объект для вашего тега):

 <class name="Lead" table="Lead">
       <!-- snip -->
    <set name="Tags" table="LeadsXTags" lazy="false" fetch="select" cascade="save-update">
        <key column="LeadId"></key>
        <many-to-many class="Tag" column="TagId"></many-to-many>
    </set>
</class>