gpt4 book ai didi

azure - 如何使用 ETag 对 Azure 表存储实体进行条件更新

转载 作者:行者123 更新时间:2023-12-03 04:47:17 24 4
gpt4 key购买 nike

如果 ETag 没有改变,如何使用 Azure 表存储实体的 ETag 来更新实体?

示例:

   var query = (from ent in cloudservicetable.CreateQuery<CloudServiceTableEntity>()
where ent.PartitionKey == "test"
&& ent.Status == "creating"
&& ent.Counter> 0
select ent).AsTableQuery();



var candidates = query.OrderByDescending(s=>s.Counter).ToList();
bool found = false;
while (!found && candidates.Any())
{
//Find best candidate
var candidate = candidates.First();

//If we can decrement the count with out the entity have been changed
//it is a acceptable candidate.
candidate.Counter--;
var opr = TableOperation.Merge(candidate);
// cloudservicetable.ExecuteAsync(opr)
// How do I only do the merge if the etag have not changed?

//TODO If changed remove/update the candidate list

}
// if found we have a candidate

最佳答案

对于条件合并,您无需执行任何操作。如果在合并操作期间 ETag 不匹配,您的代码将引发错误(PreCondition failed - Http Status Code 412)。所以你上面的代码将完美地工作。

对于无条件合并,您需要手动将实体的 ETag 属性设置为 *

关于azure - 如何使用 ETag 对 Azure 表存储实体进行条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com