【发布时间】:2018-10-11 01:20:31
【问题描述】:
Web API 核心、实体框架核心
情况 - 多对多关系。 A、Join、B。Join 具有对 A 和 B 的 Id 引用。A 具有 Joins 的集合。 B 有 Join 的集合。
目标 - 得到 A 并与 B 连接 - 仅此而已。
问题 - 我得到 A 与 Joins 与 B 具有相同的单数 Join back(在一个集合中)。这发生在实体框架端。我相信 EFCore 很聪明,它会自动使用它拥有的数据为我重新输入该引用。这会很好,除非我将此作为 Json 返回给客户。 Json 序列化程序检测到循环引用,然后将其忽略(按设计)。所以我的结果是:
{
// A stuff,
"joins": [{
"B": {
// B stuff,
"joins":[]
}
}]
}
我希望空连接集合为空,因此 Json 序列化程序将其删除。将集合设置为 null 不起作用。
foreach (A a in query)
{
foreach (Join join in a.Joins)
{
join.B.Joins = null;
}
}
虽然在循环期间它似乎将值设置为 null,但一旦我将其转义,引用就会再次返回。
感谢您的所有帮助!
-- 注意-- 稍后我希望能够通过与 A 的连接来获得 B。所以我无法通过停止 Joins.A 的所有序列化来解决这个问题。
【问题讨论】:
-
这方面的问题太多了。你确定没有一个能覆盖你的吗?
-
如何停止实体框架自动重新分配引用 - 加载后 0 个实体框架核心更改数据 - 没有任何相关的实体框架核心结果不会改变 - 0 个实体框架核心循环引用 - 引导我到这篇文章。我很高兴得到纠正,但到目前为止我还没有找到任何东西。 - 抱歉格式化,它不喜欢换行。
标签: json.net entity-framework-core