nHibernate和带有简单数组的模型

时间:2011-05-04 14:35:04

标签: 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 个答案:

答案 0 :(得分:1)

不确定它是否适用于可观察集合(可能需要映射为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>