2011-05-04 31 views
0

这是我的模型类。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

不知道它会与观察到的收集工作(可能需要映射为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>