我遇到了一个问题。我必须在天蓝色表中存储一个列表。我正在做的是将它序列化为字符串并存储它。现在,当我阅读该行时,有些情况下我没有得到更新的列表。因此,如果我们将任何项目添加到列表中,那么旧的项目就会丢失。有没有人遇到过这个问题,解决方法是什么。
详细地说,假设我们有 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''] 同时 Server2 获取列表为 [A',B',C',A''] 并附加 C'' 以使 [[A',B',C',A ''],C'']。现在关于对象 B'' 的信息丢失了。如何缓解此类问题。
我正在使用 dot net 客户端库。下面是相同的代码
TableOperation retrieveTypedInstancesOperation = TableOperation.Retrieve<TypedInstancesRow>(partitionKey, RowKey);
TableResult retrievedTypedInstancesResult = instancesTable.Execute(retrieveTypedInstancesOperation);
List<string> instanceLists = new List<string>();
if (retrievedTypedInstancesResult.Result != null)
{
string instances = ((TypedInstancesRow)retrievedTypedInstancesResult.Result).Instances;
if (!String.IsNullOrEmpty(instances)) instanceLists = JsonConvert.DeserializeObject<List<string>>(instances);
}
instanceLists.Add(InstanceId);
hierarchy.PartitionKey = partitionKey;
hierarchy.RowKey =rowKey;
hierarchy.Instances = JsonConvert.SerializeObject(instanceLists);
TableOperation insertOperation = TableOperation.InsertOrReplace(hierarchy);
instancesTable.Execute(insertOperation);