2010-03-31 113 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