Есть ли способ обновить одиночное свойство одной строки в таблице Azure? - PullRequest
0 голосов
/ 02 мая 2020

Здесь подробно описана проблема

У меня есть одна таблица Azure, в которой у меня есть несколько строк в этой таблице, но мое требование состоит в том, чтобы обновить одно свойство на основе уникального id, который помогает находить или получать записи и обновлять связанное свойство

Я много пробовал, но не смог найти какой-либо подход для решения этой проблемы.

Пожалуйста, если будет доступно какое-либо другое решение Чтобы решить эту проблему, пожалуйста, поделитесь, это мне очень поможет.

1 Ответ

0 голосов
/ 04 мая 2020

Согласно моему тесту, мы можем использовать операцию 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


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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...