Разница между Insert или Merge Entity и Insert или Replace Entity - программирование
Подтвердить что ты не робот

Разница между Insert или Merge Entity и Insert или Replace Entity

Я использую хранилище таблиц Azure для хранения данных. Я смущаюсь, когда следует использовать insert-or-replace и insert-or-merge. Я использую Azure SDK 1.7.

Мое понимание о вставке или замене заменяет все свойство предыдущего объекта новым объектом, если сущность существует. если новый объект не определяет свойство или имеет значение свойства null, то это свойство будет удалено при обновлении.

В то время как в insert-or-merge старые свойства сохраняются, даже если новый объект не определил новые свойства в новом объекте. Правильно ли я понимаю?

Mahender

4b9b3361

Ответ 1

Да! Ваше понимание верное.

Вы можете протестировать его, выполнив следующий код С# с правильными connectionString и 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" }));
}

В вашей таблице должно быть указано единственное сущность со следующими свойствами:

{
  PartitionKey = "partition",
  RowKey = "row",
  MyString = "randomString",
  MySecondString = "randomSecondString"
}