首页 > 解决方案 > EF Core 5.0 和 CosmosDB - 嵌套列表属性部分填充

问题描述

经过一周的努力让我的应用后端使用 EF Core 50+CosmosDB 作为数据存储来启动后,我遇到了一个非常烦人的问题。我有一个 OuterType 类型的 DTO,它有一个名为 SomeList 的 IList 类型的属性。OuterType 文档保存在专用容器中,并映射到 DbContext 上称为 OuterContainer 的专用 DbSet 属性。它也没有配置 OwnsMany(o => o.SomeList)。在数据存储中,表示 OuterType 实例的文档包含带有 14 个元素的 SomeList 集合。这些实例的每个属性都填充了与其类型值相对应的值。有一个 long 类型的 Id 属性,并且在每个实例中都正确地表示为 Id(而不是 id)。另外还有Guid、DateTime、自定义Enum等原始类型的字段,共6个属性。

dbContext.OuterContainer.Where(s => s.SomeProperty == f.SomeFilterValue).ToList();

我得到的结果不多,也不少于 SomeList 属性中的 4 个元素。这是一致的行为,在 14 个元素中总是返回相同的 4 个元素。最奇怪的是,返回的是索引 0、1、2 和 4!不是 3,也不是 14,而是 4!

知道这种非常奇怪的行为可能是什么原因吗?

标签: azure-cosmosdbef-core-5.0

解决方案


推荐阅读