gpt4 book ai didi

c# - Azure Cosmos 数据库集合未获取分区键

转载 作者:行者123 更新时间:2023-12-03 01:04:00 25 4
gpt4 key购买 nike

我正在尝试在我的 c# 代码中创建一个 azure cosmos 数据库和集合。

await client.CreateDatabaseIfNotExistsAsync(new Database() { Id = "data"});
DocumentCollection dCollection = await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("data"), new DocumentCollection { Id = "coll"}, new RequestOptions { OfferThroughput = 400, , PartitionKey = new PartitionKey("/id") });
// dashboardCollection.PartitionKey.Paths.Add("/id");

当我访问 portal.azure.com 并检查我的文档数据库时,就会创建该集合。当我转到集合的规模和设置时,我没有看到分区键。

我手动创建了另一个集合,它在规模和设置部分中显示分区键。

由于此分区键错误,delete 函数引发错误

已成功将 ID 为 1 的记录插入到文档数据库中。以下删除失败,表示 partitionKey 无效。

ResourceResponse<Document> response = await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri("data", "coll", "1"), new RequestOptions { PartitionKey = new PartitionKey("1") });

最佳答案

我来自 CosmosDB 工程团队。

创建 DocumentCollection 时,请确保在 DocumentCollection 对象中提供分区键,如下所示:

PartitionKeyDefinition pkDefn = new PartitionKeyDefinition() { Paths = new Collection<string>() { "/id" } };
DocumentCollection dCollection = await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("data"), new DocumentCollection { Id = "coll", PartitionKey = pkDefn }, new RequestOptions { OfferThroughput = 400, PartitionKey = new PartitionKey("/id") });

在集合 CRUD 请求期间,RequestOptions 上的 PartitionKey 不会被接受,因为我们期望 PartitionKey 是集合对象的一部分。在文档 CRUD 请求期间,会遵循 RequestOptions 上的 PartitionKey。

关于c# - Azure Cosmos 数据库集合未获取分区键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54205609/

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