Je rencontre un problème. Je dois stocker une liste dans la table azur. Ce que je fais est de le sérialiser à une chaîne et de le stocker. Maintenant, quand je lis cette ligne, il y a des cas où je n'ai pas eu la liste mise à jour. Par conséquent, après la lecture, si nous ajoutons un élément à la liste, l'ancien est perdu. Quelqu'un at-il déjà rencontré ce problème et quelle est la solution pour cela.Azure Table Maintenir la cohérence
Pour élaborer laisse dire que nous avons 3 classes où C étend B et B Prolonge A. maintenant un objet de B et C sont également objet de A. Maintenant, supposons que nous maintenons tout l'objet de A (y compris B et c) en tant que liste dans une colonne de la table Azure. état actuel des objets comme [A ', B', C ', A' '] Problème qui se produit lorsque nous avons plusieurs serveurs d'applications. Maintenant Server1 veut ajouter l'instance de B dans la liste en prenant la liste actuelle par exemple [A ', B', C ', A' '] ajoute une nouvelle instance laisse dire B' 'pour le rendre [A', B ', C' , A '', B ''] En même temps Server2 obtient la liste comme [A ', B', C ', A' '] et ajoute C' 'pour faire [[A', B ', C', A ''], C '']. Maintenant, les informations sur l'objet B '' sont perdues. Comment atténuer ce genre de problème.
Je suis la bibliothèque client usign dot net. Ci-dessous le code correspondant
TableOperation retrieveTypedInstancesOperation = TableOperation.Retrieve (partitionKey, RowKey); TableResult retrievedTypedInstancesResult = instancesTable.Execute (retrieveTypedInstancesOperation); Liste instanceLists = new List(); si (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);
Sans code, personne ne peut rien faire. – Soaku
Selon votre description, nous n'avons pas pu trouver directement la raison pour laquelle la ligne n'est pas mise à jour. Pourriez-vous s'il vous plaît poster les codes de détails sur la façon dont vous mettez à jour votre liste? Quelle touche de partition et quelle touche de ligne vous avez utilisée pour télécharger votre ligne de table. Si vous pouviez poster plus d'informations, il serait plus facile pour nous de trouver la solution, –
J'ai ajouté une description correcte. S'il vous plaît laissez-moi savoir si je peux fournir des informations supplémentaires. – Nishant