有什么方法可以更新Azure表的单行单属性?

问题描述 投票:0回答:1

下面是问题的细节

我有一个Azure表,其中我有多行在该表中,但我的要求是更新一个单一的属性的基础上,唯一的ID,这有助于找到或获得的记录,并更新相关的属性。

我尝试了很多,但无法找到任何方法来解决这个问题。

请如果任何其他解决方案将是可用来解决这个问题,请分享它真的会帮助我很多。

c# azure azure-functions azure-table-storage azure-tablequery
1个回答
0
投票

根据我的测试,我们可以使用 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();

enter image description here


更新

我的原表enter image description here

我的代码

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);

结果

enter image description here


更新1

我更新邮件的时候,分区键=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);

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.