![](/img/trans.png)
[英]how do i add a partition key using Azure.ResourceManager.CosmosDB c#
[英]How do we pass cosmos DB partition key definition while creating a cosmos DB SQL Container using Azure.ResourceManager.CosmosDB 1.0.1
我正在嘗試使用以下示例創建一個 cosmos db 分區。 我正在使用托管身份來驗證我的請求。 我正在使用 Azure.ResourceManager v1.3.1 和 Azure.ResourceManager.CosmosDB v1.0.1
在嘗試運行下面的代碼片段時,我得到:
Azure.RequestFailedException: 'Message: {"code":"BadRequest","message":"Message: {"Errors": ["A Partition key definition is not specified in the request."]}
我正在使用 .NET Framework 4.7.2
我不確定我們如何在創建 cosmos DB SQL 容器時傳遞分區鍵定義。 任何人都可以在這里幫忙。 謝謝。
private static async Task TestStub1()
{
var subscriptionId = "xxx";
var resourceGroupName = "xxx";
var accountName = "xxx";
var databaseName = "xxx";
var containerName = "xxx";
var throughputProperties = ThroughputProperties.CreateAutoscaleThroughput(4000);
var accountEndpoint = "xxx";
var location = AzureLocation.EastUS;
try
{
var tokenCredential = new DefaultAzureCredential();
var armClient = new ArmClient(tokenCredential);
var dbAccountIdentifier = new ResourceIdentifier($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/{accountName}");
var dbAccount = armClient.GetCosmosDBAccountResource(dbAccountIdentifier);
var databases = dbAccount.GetCosmosDBSqlDatabases();
var cosmosDBSqlDatabaseResourceInfo = new CosmosDBSqlDatabaseResourceInfo(databaseName);
var cosmosDBSqlDatabaseCreateOrUpdateContent = new CosmosDBSqlDatabaseCreateOrUpdateContent(location, cosmosDBSqlDatabaseResourceInfo);
var cosmosDBSqlResource = await databases.CreateOrUpdateAsync(Azure.WaitUntil.Completed, databaseName, cosmosDBSqlDatabaseCreateOrUpdateContent);
if (cosmosDBSqlResource.HasValue)
{
var cosmosDBSqlContainers = cosmosDBSqlResource.Value.GetCosmosDBSqlContainers();
var cosmosDBContainerPartitionKey = new CosmosDBContainerPartitionKey();
cosmosDBContainerPartitionKey.Kind = CosmosDBPartitionKind.Hash;
var cosmosDBSqlContainerResourceInfo = new CosmosDBSqlContainerResourceInfo(containerName);
cosmosDBSqlContainerResourceInfo.PartitionKey = cosmosDBContainerPartitionKey;
var cosmosDBSqlContainerCreateOrUpdateContent = new CosmosDBSqlContainerCreateOrUpdateContent(location, cosmosDBSqlContainerResourceInfo);
var cosmosDBSqlContainer = await cosmosDBSqlContainers.CreateOrUpdateAsync(WaitUntil.Completed, containerName, cosmosDBSqlContainerCreateOrUpdateContent);
}
}
catch (Exception ex)
{
throw;
}
}
這是 Microsoft.Azure.Management.CosmosDB 的示例,但應該相同。
假設partitionKey
的字符串參數是創建分區鍵定義的方式。
PartitionKey = new ContainerPartitionKey
{
Kind = "Hash",
Paths = new List<string> { partitionKey },
Version = 1 //version 2 for large partition key
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.