I'm using Azure table storage for storing the data. I'm getting confused on when to use insert-or-replace and insert-or-merge. I'm using Azure SDK 1.7.
My understanding on insert or replace 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 insert-or-merge, old properties will be retained even if the new entity didn't define new properties in new entity. Is my understanding is correct?
Mahender
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"
}