嘿所有人。关于Fluent语法的快速提问。我以为我把它弄下来了,但我得到了一个奇怪的失败。基本上,我有一种层次结构,我试图坚持,这一切似乎都有效,除非我用数据库进行实际的集成测试。

我有一个Node对象,它有一个Parent属性,它是另一个Node,还有一个_children字段支持只读的Children属性,它也是节点的集合。

属性处理关联关系,内存中对象测试就好了。但是,当我从存储库(我的测试中的内存中SQLite数据库)中检索它们时,任何Node的子节点都会出于某种原因包含它自己。有什么想法吗?

我的映射主要是使用AutoMap完成的,但我已经覆盖了以下内容:

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()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top