下面是问题的细节
我有一个Azure表,其中我有多行在该表中,但我的要求是更新一个单一的属性的基础上,唯一的ID,这有助于找到或获得的记录,并更新相关的属性。
我尝试了很多,但无法找到任何方法来解决这个问题。
请如果任何其他解决方案将是可用来解决这个问题,请分享它真的会帮助我很多。
根据我的测试,我们可以使用 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);
结果
我更新邮件的时候,分区键=Jim,行键=徐。
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
entity.Properties.Add("Email", new EntityProperty("[email protected]"));
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);