37

データの保存に Azure テーブル ストレージを使用しています。insertOrReplaceinsertOrMergeをいつ使用するかについて混乱しています。Azure SDK 1.7 を使用しています。

insertOrReplace に関する私の理解は、エンティティが存在する場合、前のエンティティのプロパティ全体を新しいエンティティに置き換えることです。新しいエンティティがプロパティを定義していないか、プロパティ値が null である場合、そのプロパティは更新時に削除されます。

一方、insertOrMerge では、新しいエンティティが新しいエンティティで新しいプロパティを定義していなくても、古いプロパティが保持されます。私の理解は正しいですか?

4

1 に答える 1

36

はい!あなたの理解は正しいです。

正しいconnectionStringandを指定して次の C# コードを実行することでテストでき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"
}
于 2013-02-06T15:55:45.037 に答える