According to my test, we can use merge
operation to update the existing property value to the new value or add the new property. Meanwhile, the old properties will be retained even if the new entity didn't define new properties in new entity.
For example
CloudStorageAccount account = CloudStorageAccount.Parse(" connection string");
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
TableOperation retrieveOperation = TableOperation.Retrieve<DynamicTableEntity>(entity.PartitionKey, entity.RowKey);
TableResult result = await table.ExecuteAsync(retrieveOperation);
DynamicTableEntity tableEntity = result.Result as DynamicTableEntity;
var test = "";
foreach (var pro in tableEntity.Properties) {
Console.WriteLine(pro.Key);
Console.WriteLine(pro.Value.StringValue);
test = pro.Key;
}
Console.WriteLine("update the existing last property and add a new property");
entity.Properties.Add(test, new EntityProperty("testvalue"));
if (!(tableEntity.Properties.Keys.Contains("Age"))) {
entity.Properties.Add("Age", new EntityProperty("20"));
};
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);
result = await table.ExecuteAsync(retrieveOperation);
tableEntity = result.Result as DynamicTableEntity;
foreach (var pro in tableEntity.Properties)
{
Console.WriteLine(pro.Key);
Console.WriteLine(pro.Value.StringValue);
}
Console.Read();

Update
My original table

My code
CloudStorageAccount account = CloudStorageAccount.Parse(" connection string");
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
entity.Properties.Add("Age", new EntityProperty("21"));
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);
Result

update1
I update the email with partition key = Jim and Row key = Xu
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table =tableClient.GetTableReference("people");
DynamicTableEntity entity = new DynamicTableEntity("Jim", "Xu");
entity.Properties.Add("Email", new EntityProperty("tets1@gamil.com"));
TableOperation mergeOperation = TableOperation.InsertOrMerge(entity);
await table.ExecuteAsync(mergeOperation);
