NHibernate集合映射-只读属性

NHibernate集合映射-只读属性,nhibernate,nhibernate-mapping,field,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 } } 公共类人

我有以下课程

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
    }
}
公共类人物
{
私人儿童;
公共IEnumerable子项{get;}
公共无效添加子对象(个人子对象)
{
//一些业务逻辑和添加到内部列表
}
}
要使NHibenrate能够持久化子集合,我需要做哪些更改(除了使所有内容都虚拟化之外,我知道这一点)


我是否必须向children属性添加一个setter,它执行类似于
\u children.Clear()的操作_children.AddRange(值)
。目前,该模型很好地表达了我的意图,但我不确定NH需要多少修改才能帮助我实现持久性。

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

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

在本例中,映射字段
\u children
将是HQL和条件查询中的
children

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


这可能会按原样工作,具体取决于您的映射。你有错误吗?太棒了,非常感谢。我不知道它也能抢田地!