让我们考虑我有一个名为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
如果要更新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; }
}
}