Fluent NHibernate分层数据

Fluent NHibernate分层数据,nhibernate,orm,mapping,fluent,Nhibernate,Orm,Mapping,Fluent,大家好。关于流利语法的快速问题。我本以为我把它搞定了,但我却遭遇了一次奇怪的失败。基本上,我有一个层次结构,我正在努力坚持,这一切似乎都工作,除了当我做一个实际的集成测试与数据库 我有一个Node对象,它有一个Parent属性,这是另一个节点,还有一个支持readonly children属性的_children字段,这也是一个节点集合 属性处理关联关系,内存中的对象可以很好地进行测试。但是,当我从存储库(在我的测试中是一个内存中的SQLite db)中检索它们时,由于某种原因,任何节点的子节点

大家好。关于流利语法的快速问题。我本以为我把它搞定了,但我却遭遇了一次奇怪的失败。基本上,我有一个层次结构,我正在努力坚持,这一切似乎都工作,除了当我做一个实际的集成测试与数据库

我有一个Node对象,它有一个Parent属性,这是另一个节点,还有一个支持readonly children属性的_children字段,这也是一个节点集合

属性处理关联关系,内存中的对象可以很好地进行测试。但是,当我从存储库(在我的测试中是一个内存中的SQLite db)中检索它们时,由于某种原因,任何节点的子节点都会包含自己。有什么想法吗

我的映射主要是通过自动映射完成的,但我已经覆盖了以下内容:

mapping.References(x => x.Parent);
mapping.HasMany(x => x.Children).Inverse().Access.LowerCaseField(Prefix.Underscore);

我也尝试过使用Inverse()调用

明白了。问题是,我需要告诉孩子们集合外键的Id字段

我将该映射更改为:

mapping.HasMany(m => m.Children)
  .Inverse()
  .KeyColumn("ParentId")
  .Access.CamelCaseField(Prefix.Underscore)
  .Cascade.All()

hm.将节点类转换为使用公共属性w/get/set而不是私有字段,并且正确检索了集合。不过,我真的不想那样做;我检查了数据库,所有的东西都保存好了,问题是当数据被拉回到对象中时。我已经用Castle Framework做过了,但是我忘记了,我正在和你一样的问题斗争。当我读到你的答案时,我有一个“哈哈”的瞬间,谢谢:)