Есть ли код C # для удаления документов БД космос - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над разработкой .net api, в которой одна задача удаляет некоторые документы в зависимости от условия. Документы находятся в базе данных Cosmos.

Я пытался с помощью хранимых процедур, но не получил нужный SPкоторый удалил запись. Я попытался извлечь документы, используя запрос выбора с условием где и циклически проходя через него, получил и передал идентификатор документа, и я попытался удалить 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));    

        }

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Этот код работает для меня:

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, я не проверял это (код существует в проекте в течение длительного времени).

0 голосов
/ 12 июля 2019

/ ---------------. Удалить документы ------------ / var docUri = UriFactory.CreateDocumentUri (databaseName, collectionName, documentName);RequestOptions options = new RequestOptions {PartitionKey = new PartitionKey (Partitionkeyvalue)};var deleteresponse = await client.DeleteDocumentAsync (docUri, options);

Теперь у меня все работает нормально. Проблема была в том, что такое partitiokeyvalue.Спасибо

...