提问者:小点点

如何在where条件下使用其他属性值更新Azure存储表中的一个特定属性值?


让我们考虑我有一个名为tbl_resourceCost的表存储表。

现在,我想通过使用分区键和ResourceGuid来更新扩展成本。因此,如果我在WHERE条件下将xxx01作为PartitionKey传递,zzz01作为ResourceGuID,那么它将只将我的extendedCost(即100和200)更新为700。

如果我们在SQL中考虑更新,那么查询将是“update Tbl_ResourceCost set extendedcost=700 where partitionkey=xxx01 and resourceGuid=zzz01”。它将在一次执行中将100和200更新到700。

我正在寻找C#中类似的查询,以便在Azure存储表中更新。我正在将NuGet包用作:microsoft.azure.cosmos.table


共1个答案

匿名用户

如果要更新Azure表存储实体的属性,我们需要提供分区键和行键。更多详情请参考这里。因此,根据您的需要,我们需要查询Azure表存储来获得这些您需要的实体,然后更新这些实体。

例如:

using Microsoft.Azure.Cosmos.Table;
using System.Threading.Tasks;
using System;
namespace Storage
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string connectionString = "";
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
            var table =tableClient.GetTableReference("test");

            TableQuery<MyEntity> myQuery = new TableQuery<MyEntity>().Where(
                    TableQuery.CombineFilters(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, ""),
                        TableOperators.And,
                    TableQuery.GenerateFilterCondition("ResourceGuID", QueryComparisons.Equal,"")));

            foreach (MyEntity entity in table.ExecuteQuery(myQuery))
            {
                entity.ExtendedCost = ;
                TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity);
                TableResult result = await table.ExecuteAsync(insertOrMergeOperation);
                var s = result.Result as MyEntity;
               Console.WriteLine(s.ExtendedCost )
            }

        }      
    }

    public class MyEntity : TableEntity
    {
        public MyEntity()
        {
        }

  
        public string ResourceGuID{ get; set; }

        public Int32 ExtendedCost { get; set; }

    }
}