存储文件中未显示的自有JSON采集导航作为无效(自有对应编号为38625)实现
作者: philcarbone创建于 2026年9月22日更新于 2026年9月29日
标签area-queryarea-jsonarea-owned-entities
QQ 错误描述
#38625报道说,一张地图被绘制给JSON的"复杂*"收藏,其密钥不在所存储的文档中,被实现为"null"而不是一空收藏,因此在收藏被添加到该类型之前,行会一直被坚持. #39014 修正了复杂的收藏, 并故意让 * 拥有的实体 * 收集导航 映射到 JSON 上,
所拥有案件的行为完全相同,从同一个代码路径来看:Jsonnitity Materiner Reriger ' 运行了读取回回回路之后的每一个嵌入物修复,因此,在文档中从未出现的导航可以以null'来引用它的修复。
以现有的 " Jsonnity Basic " (SQLite,json remove'/json set ' )固定方式复制,用于塑造所储存的文件:
- 已存储的`自有参考 Root ' 文件 * * * * * * * * * * |.
- 关键
自备部队 ' ** 缺席**自备部队 ' 部门=== QQ 密钥存在, 有 “ [] ” , 空列表 , 空列表 。
因此,一个将自有收藏添加到现有的JSON自有类型中的应用程序会看到每行原有的“null”,但之后每行的“null”。 EF所编写的文档总是包含密钥,因此这只有在计划进化后才被咬入,或者与另一个作者所出出的文件相接.
预期行为
与#39014中对复杂藏品的固定一致:不存在的自有藏品导航作为空藏品实现;保留了明确的JSON`null'.
EF 内的先例
- ** 宇宙已经这样做了。 **
宇宙成像计算器 ' 创建了带收集器 ' 的巢状集。 创建() ' *在 * 其属性读取回路并添加读取的元素([来源](https://GitHub.com/dotnet/efcore/blob/be5ef4a52d88cabacdea656dac85024a25584882f/src/EFCore.Cosmos/Query/Internal/CosmospedQueryComputing Expressionitor.ShaperPropressingExpressional Visitor.cs#L1289-L1301)),因此一个密钥从未出现出出空藏. (宇宙对一个明确的 " null " 也产生空洞;#39014中的关系定律将 " nall " 保留在那里,这似乎是更好的区分,但缺一关键的结果是一样的。 ) - ** 关系已经为当前
[]'产生相同的对象。 **Matrialize Json Entity Collection'通过财产的IClr Collection Accessor'来建造空收;#39014中的固定部分对缺案使用相同的取取取器,因此缺案和[]'变得不可区分,这是演进的一行计划所需要的。
修正的注释
39014号的机制直接延伸:登记Inavigation { Iscollection: true }和`IComplex Property'的缺席财产修复。 两个细节与复杂案件不同,值得裁决:
- ** 跟踪查询。 ** 对于拥有的实体,更改跟踪器进行修复,现有的跟踪修复只有在收集为 " null " 或空时才进行。 缺失的密钥应产生相同的 . . . . . . .
内容来源: dotnet/efcore