Добавить или заменить объект в хранилище таблиц Azure

Я работаю с хранилищем таблиц Windows Azure и имею простое требование: добавить новую строку, перезаписав любую существующую строку с помощью этого ключа PartitionKey / RowKey. Однако сохранение изменений всегда вызывает исключение, даже если я передаю параметр ReplaceOnUpdate:

tableServiceContext.AddObject(TableName, entity);
tableServiceContext.SaveChangesWithRetries(SaveChangesOptions.ReplaceOnUpdate);

Если объект уже существует, он выдает:

System.Data.Services.Client.DataServiceRequestException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException: <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code>EntityAlreadyExists</code>
  <message xml:lang="en-AU">The specified entity already exists.</message>
</error>

Действительно ли мне нужно сначала вручную запросить существующую строку и вызвать DeleteObject на нем? Это кажется очень медленным. Конечно, есть способ лучше?

15
задан EMP 17 December 2010 в 00:40
поделиться