Согласно моему тесту, мы можем использовать операцию merge
, чтобы обновить существующее значение свойства до нового значения или добавить новое свойство. Между тем, старые свойства будут сохранены, даже если новый объект не определил новые свойства в новом объекте.
Например,
CloudStorageAccount account = CloudStorageAccount.Parse(" connection string");
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
TableOperation retrieveOperation = TableOperation.Retrieve<DynamicTableEntity>(entity.PartitionKey, entity.RowKey);
TableResult result = await table.ExecuteAsync(retrieveOperation);
DynamicTableEntity tableEntity = result.Result as DynamicTableEntity;
var test = "";
foreach (var pro in tableEntity.Properties) {
Console.WriteLine(pro.Key);
Console.WriteLine(pro.Value.StringValue);
test = pro.Key;
}
Console.WriteLine("update the existing last property and add a new property");
entity.Properties.Add(test, new EntityProperty("testvalue"));
if (!(tableEntity.Properties.Keys.Contains("Age"))) {
entity.Properties.Add("Age", new EntityProperty("20"));
};
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);
result = await table.ExecuteAsync(retrieveOperation);
tableEntity = result.Result as DynamicTableEntity;
foreach (var pro in tableEntity.Properties)
{
Console.WriteLine(pro.Key);
Console.WriteLine(pro.Value.StringValue);
}
Console.Read();
Обновление
Мой исходный стол
Мой код
CloudStorageAccount account = CloudStorageAccount.Parse(" connection string");
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
entity.Properties.Add("Age", new EntityProperty("21"));
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);
Результат
update1
Я обновляю письмо с ключом раздела = Джим и ключ строки = Xu
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
entity.Properties.Add("Email", new EntityProperty("tets1@gamil.com"));
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);