Ceci est la solution.so loin
- entité est le courant enregistrement mis à jour qui doit être remplacé dans le tableau. (Détail entité a sous-ensemble des champs de la table pour laquelle sont transmises les valeurs nulles) .
Toute optimisation ou suggestion sont les bienvenues.
Code Snippet
TableQuery<DynamicTableEntity> rangeQuery = new TableQuery<DynamicTableEntity>().Where(
TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, Entity.PartitionKey),
TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, Entity.RowKey)));
DynamicTableEntity CurrTblRec = table.ExecuteQuery(rangeQuery).FirstOrDefault();
if (CurrTblRec != null)
{
OperationContext OpContext = new OperationContext();
DynamicTableEntity EntityDyn = new DynamicTableEntity();
IDictionary<string, EntityProperty> EntityKV = TableEntity.WriteUserObject(Entity, OpContext);
Dictionary<string, EntityProperty> ExtraFldLt = CurrTblRec.Properties.Where(x => !EntityKV.ContainsKey(x.Key)).ToDictionary(x => x.Key, x => x.Value);
EntityDyn.ReadEntity(EntityKV, OpContext);
foreach (var AdditionalField in ExtraFldLt)
EntityDyn.Properties.Add(AdditionalField);
EntityDyn.PartitionKey = Entity.PartitionKey;
EntityDyn.RowKey = Entity.RowKey;
EntityDyn.ETag = "*";
TableOperation ReplaceEntity = TableOperation.Replace(EntityDyn);
tblRes = table.Execute(ReplaceEntity);
}
else
{
TableOperation insertOperation = TableOperation.Insert(Entity);
table.Execute(insertOperation);
}
Y at-il solution de contournement disponible. Où je peux récupérer tous les champs dans DynamicTableEntity et mettre à jour juste un sous-ensemble des champs avec les valeurs d'enregistrement TableEntity actuelles et «Remplacer» le DynamicTableEntity dans la table. –
Oui, c'est effectivement une possibilité. Récupérer des données dans un DynamicTableEntity et travailler avec cela. –