我遇到了一個問題。我必須在天藍色的表格中存儲一個列表。我正在做的是將它序列化爲一個字符串並存儲它。現在,當我閱讀那行時,有些情況下我沒有得到更新的列表。如果我們在列表中添加任何項目,結果發佈後,較舊的會丟失。有沒有人遇到過這個問題,以及對此有何解決方案。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