Dies ist das solution.so weit
- Entity der aktuelle aktualisierte Datensatz ist, die in der Tabelle ersetzt werden muss. (Entity Datensatz hat Teilmenge der Felder in der Tabelle, für die Nullwerte übergeben werden) .
Jede Optimierung oder Vorschläge sind willkommen.
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);
}
Gibt es eine Abhilfe zur Verfügung. Hier kann ich alle Felder in DynamicTableEntity abrufen und nur eine Teilmenge der Felder mit den aktuellen TableEntity-Datensatzwerten aktualisieren und DynamicTableEntity in der Tabelle durch "Replace" ersetzen. –
Ja, das ist in der Tat eine Möglichkeit. Rufen Sie Daten in einer 'DynamicTableEntity' ab und arbeiten Sie damit. –