2010-03-31 131 views
1

我有下面的類NHibernate的集合映射 - 只讀屬性

public class Person 
{ 
    private IList<Person> _children; 

    public IEnumerable<Person> Children { get; } 

    public void AddChild(Person child) 
    { 
     // Some business logic and adding to the internal list 
    } 
} 

我將有哪些變化,使對NHibenrate能夠堅持子集合(除了讓一切虛擬的,我知道,一個)。

我是否需要爲兒童房產添加二傳手,這些房產類似於_children.Clear(); _children.AddRange(value)。目前這個模型很好地表達了我的意圖,但我不確定NH需要多少改動才能以持久的方式幫助我。

+0

這可能只是工作,這取決於您的映射。你有錯誤嗎? – 2010-03-31 12:27:36

回答

2

NHibernate能夠映射私人領域。訪問和命名策略在參考文檔的property部分討論。

讓您的公共會員虛擬爲代理需要工作。這些通常是實體類的運行時生成的子類。

在此示例中,映射字段_children將在HQL和Criteria查詢中爲Children

<class name="Person" table="person"> 
    <bag name="Children" access="field.camelcase-underscore"> 
     <key column="parentid" /> 
     <one-to-many class="Person" /> 
    </bag> 
</class> 
+0

真棒,非常感謝。我不知道它可以抓住領域! – 2010-03-31 14:51:54