当前位置: 首页 > 知识库问答 >
问题:

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

拓拔奇
2023-03-14

让我们考虑我有一个名为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个答案

宋俊民
2023-03-14

如果要更新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; }

    }
}
 类似资料:
  • 问题内容: 内容: 我要从更改为。这是我的代码: 输出内容: 其他属性将被删除。我想更新一个特定的属性值,而不删除其他属性。 问题答案: 关闭输入流后,打开输出流并存储属性。

  • 我想使用DynamoDBMapper只更新项目的特定属性。例如,我有一个带有属性的用户表。,id,name,地址。 我想只更新地址属性,而不是其他字段(选择性更新)。 我可以使用UpdateItemSpec找到一个示例,但在DynamoDBMapper中找不到。使用UpdateItemSpec,我可以使用withUpdateExpression()定义更新表达式。更多细节可以在这里找到。 是否有任

  • 问题内容: 因此,我最近开始涉足OOP,到目前为止一切进展顺利。虽然我本身没有任何问题,但我希望有一个令人惊奇的功能,尽管我找不到关于该功能的任何文档。 在为对象分配属性时,我经常发现我必须更改依赖于他人的属性,例如光明与黑暗。这是一个例子: 现在,尽管这很酷,但我想要的是相同的过程,但是如果一个属性发生更改,则在同一对象内。如果我重置光的属性(是的),我希望黑暗相应地增加/减少。如果可以更改光的

  • 我正在编写简单的程序来执行Amazon DynamoDB操作,我有两个问题, 我想使用updateItem更新参数“year”,但出现了一个错误 表达式属性值包含无效键:语法错误;键:val(服务:Amazon DynamoDBv2;状态代码:400;错误代码:ValidationExcture;请求ID:K6B8GC69295KUV9V7J10OCAFJJV4KQNSO5AEMVJF66Q9AS

  • 我正在尝试更新当前登录用户的密码。但它显示了零点异常。 配置文件控制器: ProfileService: 给我这个错误: 2019-07-09 01:55:04.284错误---[nio-8080-exec-8]o.g.web.errors.GrailsExceptionResolver: NullPointerExcture发生时处理请求:[POST] /profile/doPasswordCh

  • 问题内容: 我在SQL Server 2008中有一个表,其中有一些列。这些列之一是Xml格式,我想更新一些属性。 例如,我的Xml列的名称为,它在前5行中的值如下: 我想将所有属性设置为30到40,如下所示: 问题答案: 从问题的早期版本看来,您的XML实际上位于表的不同行上。在这种情况下,您可以使用此功能。 使用表变量的工作样本。