Какой хороший метод проверки операции вставки таблицы Azure? - PullRequest
0 голосов
/ 27 сентября 2018

До сих пор я полагался на TableResult.HttpStatusCode = 204 как положительный результат операции Insert согласно:

Свойство TableResult.HttpStatusCode

Я получаю 200, если объект уже существует, и 204 при успешной операции вставки.Я также пытался использовать параметр echoContent в TableOperation согласно:

TableOperation.Insert Метод

echoContent ничего не возвращаетв моем случае, поэтому я не уверен, что делаю что-то не так или преследую единорогов.Я не был уверен, что echoContent просто отправляет обратно данные, которые вы ему отправили, или действительно ли оно возвращает записанную сущность.

Есть ли лучший способ проверки?Я слишком полагаюсь на REST API хранилища Azure Table или это все, что у нас есть?

1 Ответ

0 голосов
/ 28 сентября 2018

Сначала я выполнял операцию чтения, а затем оценивал результат, чтобы увидеть, существует ли ранее дубликат в моем коде.Операция вставки, выполненная без предварительной проверки, действительно вернула 409, однако это было найдено после отладки исключения, вызванного вставкой поверх существующего объекта.

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

Мой последний код был из API, который получает значительное количество данных.и я не хотел обременять транзакцию поиском и сравнением перед вставкой.

Чтобы решить эту проблему, я установил блок try / catch, чтобы отслеживать конкретный тип исключения 409:

catch (Microsoft.WindowsAzure.Storage.StorageException e) when (e.RequestInformation.HttpStatusCode == 409)
        {
            TableResult tableResult = new TableResult();
            tableResult.HttpStatusCode = e.RequestInformation.HttpStatusCode;
            tableResult.Result = e.Message;
            return tableResult;
        }

Поскольку мой метод возвращал тип TableResult, мне пришлось отформатировать новый tableResult для отправки обратно вызывающей стороне.Используя оператор switch для вызывающей стороны, я смог обработать различные сценарии (успех / исключение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...