You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cosmos DB写入成功但读取返回404 NotFound错误是什么原因?

问题原因及修复方案

核心错误:分区键参数传入错误

你创建容器时指定的分区键路径是/id,这意味着每个文档的分区键值等于该文档id字段的实际取值,而不是固定字符串"id"。你当前读取代码里写的new PartitionKey("id")是在查询分区键值为"id"这三个字符的文档,自然匹配不到你存的对应id的条目。

修正后的读取代码

public async Task<MyDto> GetRecord(Guid myId)
{
    // 分区键值传目标文档id的实际值,和第一个参数保持一致即可
    var data = await container.ReadItemAsync<FlightDoc>(myId.ToString(), new PartitionKey(myId.ToString()));
    return new MyDto
    {
        Id = Guid.Parse(data.Resource.id)
    };
}

关于嵌套实体读取的补充说明

只要你的FlightDoc类中定义了对应Sample子实体集合的属性,例如:

public class FlightDoc
{
    public string id { get; set; }
    // 其他Flight属性
    public List<Sample> Samples { get; set; }
}

Cosmos DB的SDK会自动反序列化文档中的所有嵌套结构,不需要额外配置就能拿到完整的带Sample子实体的Flight数据。

内容的提问来源于stack exchange,提问作者Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:06:01