NHibernate集合映射 - 只读属性

时间:2010-03-31 12:10:51

标签: nhibernate nhibernate-mapping field

我有以下课程

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进行哪些更改才能保留Child集合(除了使所有内容虚拟,我知道那个)。

我是否必须在子属性中添加一个setter,它类似于_children.Clear(); _children.AddRange(value)。目前该模型很好地表达了我的意图,但我不确定NH需要多少改动才能帮助我坚持不懈。

1 个答案:

答案 0 :(得分:2)

NHibernate能够映射私有字段。访问和命名策略在参考文档的property部分进行了讨论。

代理需要使您的公共成员成为虚拟成员才能工作。这些通常是运行时生成的实体类的子类。

在此示例中,在HQL和Criteria查询中映射字段_children将为Children

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