.net core 在处理CosmosDB模拟器时是否需要分区密钥?

.net core 在处理CosmosDB模拟器时是否需要分区密钥?,.net-core,azure-cosmosdb,.net Core,Azure Cosmosdb,尝试通过DeleteDocumentSync删除CosmosDB文档会给我一个Microsoft.Azure.Documents.DocumentClientException:消息:{“错误”:[“未找到资源”]},无论我尝试什么。 目前我使用的CosmosDB本地模拟器只有一个集合和一条记录,所以我还没有定义任何分区键 这是我的文档结构: { "id": "a1032017-c131-4fe0-a045-1d342bc56410", "Code": "059058", "Key": "f99

尝试通过DeleteDocumentSync删除CosmosDB文档会给我一个Microsoft.Azure.Documents.DocumentClientException:消息:{“错误”:[“未找到资源”]},无论我尝试什么。 目前我使用的CosmosDB本地模拟器只有一个集合和一条记录,所以我还没有定义任何分区键

这是我的文档结构:

{
"id": "a1032017-c131-4fe0-a045-1d342bc56410",
"Code": "059058",
"Key": "f9971f3a-9737-4da5-90df-2ab7f93ba679",
"CreatedOn": "2019-09-30T15:50:53.0368614-04:00",
"TTL": 1440,
"PhoneNumber": "1112223333",
"_rid": "35E3AOfSiUUBAAAAAAAAAA==",
"_self": "dbs/35E3AA==/colls/35E3AOfSiUU=/docs/35E3AOfSiUUBAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-77c8-620aa5ca01d5\"",
"_attachments": "attachments/",
"_ts": 1569873059
}

要删除的代码:

public async Task Delete<T>(T codeKeyPairModel) where T : CodeKeyPairModel
    {
        var documentLink = UriFactory.CreateDocumentUri(cosmosDBId, collectionId, codeKeyPairModel.Id.ToString());
        var result = await cosmosDBClient.DeleteDocumentAsync(documentLink,
                new RequestOptions() { PartitionKey = new PartitionKey(Undefined.Value) });
    }

emulator是否需要为更小的DBs设置分区?如果是这样,我如何设置一个呢?

我为您的样品做了一个测试,它适合我。您可以删除PartitionKey设置,因为您说过您的集合是单个集合,而不是分区集合。不需要指向任何分区键

我的代码:

DocumentClient documentClient = new DocumentClient(new Uri(endpointUrl), authorizationKey);

var documentLink = UriFactory.CreateDocumentUri(databaseId, collectionId, "a1032017-c131-4fe0-a045-1d342bc56410");

await documentClient.DeleteDocumentAsync(documentLink, null);

您好,我的回答对您有帮助吗?您好,jay,如果我删除未定义的分区键,调用DeleteDocumentAsync时会出现异常:“必须为此操作提供分区键值”
DocumentClient documentClient = new DocumentClient(new Uri(endpointUrl), authorizationKey);

var documentLink = UriFactory.CreateDocumentUri(databaseId, collectionId, "a1032017-c131-4fe0-a045-1d342bc56410");

await documentClient.DeleteDocumentAsync(documentLink, null);