I'm using Azure table storage for storing the data. I'm getting confused on when to use insertOrReplace and insertOrMerge. I'm using Azure SDK 1.7.
My understanding on insertOrReplace is replacing entire property of previous entity with new entity if the entity exists. if the new entity doesn't define property or having property value null then that property will be removed on updating.
Whereas in insertOrMerge, old properties will be retained even if the new entity didn't define new properties in new entity. Is my understanding is correct?
Yes! Your understanding is correct.
You can test it by running following C# code with a correct connectionString
and tableName
:
class MyEntity : TableEntity { public string MyString { get; set; } } class MySecondEntity : TableEntity { public string MySecondString { get; set; } } public void MergeTest() { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference(tableName); table.CreateIfNotExists(); // Insert an entity table.Execute(TableOperation.Insert(new MyEntity() { PartitionKey = "partition", RowKey = "row", MyString = "randomString" })); // Merge with a different class table.Execute(TableOperation.InsertOrMerge(new MySecondEntity() { PartitionKey = "partition", RowKey = "row", MySecondString = "randomSecondString" })); }
You should end up with a single entity in your table with the following properties:
{ PartitionKey = "partition", RowKey = "row", MyString = "randomString", MySecondString = "randomSecondString" }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With