2017-08-03 6 views
0

これらの方法の両方についてMicrosoftのドキュメントを参照した後、2つの違いは見られません。私はInsertOrMergeで少し実験しましたが、それは古いデータを新しいデータで置き換えています。AzureストレージテーブルのInsertOrUpdateとInsertOrMergeの違いは何ですか?

+1

https://stackoverflow.com/questions/14685907/difference-between-insert-or-merge-entity-and-insert-or-replace-entity –

+0

。リンクのおかげで –

答えて

1

InsertOrUpdate =は、新しいエンティティで定義されていないフィールドの削除を含め、エンティティ全体を置き換えます。

InsertOrMerge =新しいエンティティに含まれていないフィールドが残っていれば、残りのフィールドはすべて更新されます。 のように定義しているWindows Azureテーブルによって提供さ

0

https://blogs.msdn.microsoft.com/windowsazurestorage/2011/09/15/windows-azure-tables-introducing-upsert-and-query-projection/

2つのアップサートAPIがある InsertOrReplaceエンティティとInsertOrMergeエンティティは、次のとおりです。

  • InsertOrReplace Entityを:APIの名前が示すように、InsertOrReplaceエンティティエンティティに が存在しない場合はエンティティを挿入します。エンティティが存在する場合は、既存のエンティティを置き換えます。これは、操作が正常に完了すると、テーブルには、 が既に存在していた場合、InsertOrReplaceで定義されているプロパティを持つ新しいエンティティ が含まれます。
  • InsertOrMerge Entity:エンティティが存在しない場合はエンティティが挿入されます。エンティティが存在する場合は、提供されたエンティティプロパティが既存のエンティティプロパティとマージされます。 操作が正常に完了すると、テーブルには、要求に提供された更新されたプロパティを持つ 提供エンティティが含まれます。 の場合、エンティティが存在する場合、APIは としてMerge Entityと同じ効果を持ちます。結果のエンティティは、既存のものと更新されたものの間の プロパティの和集合です。今、総理にかなって
+0

ここで指摘する重要なことは、InsertOrReplaceとInsertOrMergeの両方について、テーブルサービスは定義されていてもEtagを省略していることです。したがって、エンティティの古いバージョンを置換またはマージすることになります。 Etagを私が知る限り少し不幸に思うこれらのAPIのバージョンはありません。 –

+0

@DoguArslan私は、エンティティのETag値を知っていればAzure Table Storageサービス側からエンティティを取得していなければならないので、InsertOrReplace/InsertOrMerge APIではなくReplace/Merge APIを呼び出す必要があります。 –

+0

これは、単純なユースケースでは大抵正しいですが、グローバルに分散したシステムと最終的な一貫性に取り組んでいる場合は必ずしもそうとは限りません。エンティティを読み込んだテーブルと、マージしたいテーブルは、異なるテーブルである可能性があります。私はapiが他の非挿入バージョンとして*経由でEtagを省略するという決定を顧客に残した方が良いだろうと思う。 –

関連する問題