Я работаю с хранилищем таблиц 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
на нем? Это кажется очень медленным. Конечно, есть способ лучше?