我遇到了一个问题。我必须在天蓝色的表格中存储一个列表。我正在做的是将它序列化为一个字符串并存储它。现在,当我阅读那行时,有些情况下我没有得到更新的列表。如果我们在列表中添加任何项目,结果发布后,较旧的会丢失。有没有人遇到过这个问题,以及对此有何解决方案。Azure Table保持一致性
为了详细说明,假设我们有3类,其中C扩展B和B扩展A. 现在B的任何物体和C也A. 的对象现在让我们说,我们维持A(包括B的所有对象和c)作为一列Azure表中的列表。当前状态为[A',B',C',A'] 当我们有多个应用程序服务器时会发生问题。现在Server1想通过取当前列表来添加B的实例,例如[A',B',C',A'']追加新的实例让B''使它成为[A',B',C' A',B',B''] 与此同时,Server2获得列表为[A',B',C',A'']并附加C''以使[[A',B',C' A ''],C '']。 现在关于对象B“的信息丢失了。 如何缓解这类问题。
我是usign dot net客户端库。 下面是代码相同
TableOperation retrieveTypedInstancesOperation = TableOperation.Retrieve(partitionKey,RowKey); TableResult retrievedTypedInstancesResult = instancesTable.Execute(retrieveTypedInstancesOperation); List instanceLists = new List(); 如果(retrievedTypedInstancesResult.Result!= NULL){
string instances = ((TypedInstancesRow)retrievedTypedInstancesResult.Result).Instances;
if (!String.IsNullOrEmpty(instances)) instanceLists = JsonConvert.DeserializeObject<List<string>>(instances);
}
instanceLists.Add(InstanceId);
heirarchy.PartitionKey = partitionKey;
heirarchy.RowKey =rowKey;
heirarchy.Instances = JsonConvert.SerializeObject(instanceLists);
TableOperation insertOperation = TableOperation.InsertOrReplace(heirarchy);
instancesTable.Execute(insertOperation);
没有代码,没有人可以做任何事情。 – Soaku
根据您的描述,我们无法直接找到该行未更新的原因。您能否发布有关您如何更新清单的详细信息代码?您用于上传表格行的分区键和行键。如果您可以发布更多详细信息,我们可以更轻松地找到解决方案, –
我已添加适当的说明。请让我知道我是否可以提供任何其他信息。 – Nishant