gpt4 book ai didi

azure-cosmosdb - 从文档中提取的 PartitionKey 与 CreateItemAsync header 中指定的不匹配

转载 作者:行者123 更新时间:2023-12-03 15:58:18 34 4
gpt4 key购买 nike

我在使用 Microsoft.Azure.Cosmos 3.2.0 版时遇到了一些问题,
运行时

await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey("anythingIPutHere"));
它抛出

Microsoft.Azure.Cosmos.CosmosException HResult=0x80131500
Message=Response status code does not indicate success: 400 Substatus:1001 Reason: (Message: {"Errors":["PartitionKey extracted fromdocument doesn't match the one specified in the header"]}


但如果我把
await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey(logEntity.Id));
它有效,并且是唯一有效的情况。
我也试过
  • 将分区键的值作为属性放入对象中;
  • 甚至指定一个 partitionKey JSON 属性名称但没有成功;

  • 我查看了 Microsoft 站点上的一些指南,似乎您可以将分区键指定为某个字符串,而不必是 id 或使用对象上的属性名称指定;那么为什么会这样呢?

    最佳答案

    我在创建容器时忽略了这一点

    this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/id");

    我已指定 partitionKeyPath作为beeing /id .

    似乎分区键必须驻留在对象上,并且必须具有 partitionKeyPath 属性名称的 json 属性,而没有/喜欢:
    [JsonProperty(PropertyName = "partition")]
    public string Partition { get; set; }

    如果 partitionKeyPath/partition
    this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/partition");

    对不起,如果这很明显,我刚刚开始玩 CosmoDb。

    关于azure-cosmosdb - 从文档中提取的 PartitionKey 与 CreateItemAsync header 中指定的不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58121736/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com