如何在cosmos db中为容器创建新记录?

问题描述 投票:0回答:1

努力弄清楚如何在我的业余项目中使用 cosmos db。 并且无法理解我如何为容器创建新记录。

我有一些通用存储库方法,由控制器调用:

public async Task CreateAsync(TEntity entity, string partitionKey)
    {
        
var itemResponse = await _container.CreateItemAsync<TEntity>(entity, new                PartitionKey(partitionKey));
        entity.Id = itemResponse.ActivityId;
    }

控制器:

[HttpPost("language")]
public async Task<IActionResult> CreateLanguage(Language language)
{
    await languageRepository.CreateAsync(language, "language");
    return Ok();
}

语言容器具有分区键 -> /language。

现在我只想通过邮递员测试我的服务:

{
    "Language": "Spanish",
    "Name": "Spanish",
    "LanguageImage": ""
}

型号:

public class Language : Entity
{
    [JsonProperty("language_name")]
    public string Name { get; set; }

    [JsonProperty("language_image")]
    public string LanguageImage { get; set; }

    public Language() : base(true)
    {
    }
}

public class Entity
{
    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("ttl")]
    public int Ttl { get; set; }

    public Entity(bool generateId = true)
    {
        SetDefaultTimeToLive();

        if (generateId)
        {
            this.Id = Guid.NewGuid().ToString();
        }
    }

    public virtual void SetDefaultTimeToLive()
    {
        Ttl = -1;
    }
}

azure portal 发送查询后,收到错误消息:从文档中提取的 PartitionKey 与标头中指定的不匹配。

我尝试在标头中添加分区键,作为参数,也添加到 json,但仍然收到相同的错误。

.net azure-cosmosdb
1个回答
0
投票

那么您是否有一组具有“语言”属性的 JSON 文档存储在 Cosmos DB 中?您希望它根据“语言”属性分区到不同的存储吗?

如果是的话,你可以看看这个问题: 从文档中提取的 PartitionKey 与 CreateItemAsync 标头中指定的不匹配

否则,也许可以解释一下您使用的是什么类型的 Cosmos DB?也许分享完整的帖子正文?

© www.soinside.com 2019 - 2024. All rights reserved.