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