我有以下课程
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需要多少改动才能帮助我坚持不懈。
答案 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>