CosmosDb Удалить в L oop не удалось после одного удаления - PullRequest
1 голос
/ 08 января 2020

Я создал консольное приложение для удаления документов из CosmosDB на основе настроенного нами раздела.

using (var client = new DocumentClient(new Uri(Config["CosmosEndpoint"]), Config["CosmosAuthkey"]))
            {
                var db = Options.Env.ToUpper().Equals("CI") ? Config["CiDatabase"] : Config["QaDatabase"];
                var tenantString = $"{Options.Tenant}-{Options.Language}";
                Log.Information($"Deleting {tenantString} from {db}-{Config["CosmosCollection"]}");

                var query = client.CreateDocumentQuery<Document>(
                                    UriFactory.CreateDocumentCollectionUri(db, Config["CosmosCollection"]),
                                    "SELECT * FROM c",
                                    new FeedOptions()
                                    {
                                        PartitionKey = new PartitionKey(tenantString)
                                    }
                                ).ToList();

                Log.Information($"Found {query.Count} records for Tenant: {tenantString}");

                if (query.Count > 0)
                {
                    foreach (var doc in query)
                    {
                        Log.Information($"Deleting document {doc.Id}");

                        await client.DeleteDocumentAsync(doc.SelfLink,
                                new RequestOptions { PartitionKey = new PartitionKey(tenantString) });

                        Log.Information($"Deleted document {doc.Id}");

                    }
                }
                else
                {
                    Log.Information($"Tenant: {tenantString}, No Search Records Found");
                }
            }

Это никогда не достигает строки Log.Information($"Deleted document {doc.Id}");, но, похоже, не выдает исключение , Я обернул вызов в исключение try / catch для Исключения DocumentClient / ArgumentNull в попытке увидеть, что это было, но это просто бомбы при вызове удаления. Однако он всегда удаляет один документ.

Это говорит о том, что моя конфигурация должна быть правильной, так как я подключаюсь, запрашиваю и даже удаляю, но не для всех документов в запросе. Еще более странным является то, что я скопировал это из другого приложения, которое я написал ранее, где работает этот код.

  • Существует ли верхний предел подключения, означающий, что мне нужно немного задержать цикл?
  • Почему я не вижу исключение при использовании try / catch?

Или есть еще одна причина, по которой я могу удалить только один документ за раз с этим код

...