我正在开发.net api,其中一个任务是根据条件删除一些文档。这些文档位于Cosmos DB中。
我已经尝试通过存储过程,但是没有获得正确的SP来删除记录。我试图使用带有条件的条件选择查询来获取文档,并通过循环遍历来获取并传递文档ID,并且试图删除
using DeleteDocumentAsync
//---Deleting Document based on documentId from corresponding DbName,CollectionName-----------//
private async Task DeleteSecurityDocument(string databaseName, string collectionName, string documentName)
{
string endPoint = ConfigurationManager.AppSettings["DocDbEndPoint"];
string masterKey = ConfigurationManager.AppSettings["DocDbmasterKey"];
var client = new DocumentClient(new Uri(endPoint), masterKey);
await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(databaseName, collectionName, documentName));
}
答案 0 :(得分:1)
此代码对我有用:
var docUri = UriFactory.CreateDocumentUri(databaseId, collectionId, documentId);
var doc = await _client.ReadDocumentAsync(docUri, options);
if (doc != null)
{
return await _client.DeleteDocumentAsync(doc.SelfLink, options);
}
其中options
是RequestOptions
的实例,如果您使用分区集合,则应该设置PartitionKey 。
这里很可能不需要在删除之前阅读文档,您可以直接将docUri放进去,我没有检查过(该代码已经存在于项目中很长时间了。)
答案 1 :(得分:0)
/ ---------------。删除文件------------ / var docUri = UriFactory.CreateDocumentUri(databaseName,collectionName,documentName); RequestOptions选项=新的RequestOptions {PartitionKey = new PartitionKey(Partitionkeyvalue)}; var deleteresponse =等待客户端。DeleteDocumentAsync(docUri,选项);
现在对我来说很好。问题在于partitiokeyyvalue。谢谢