如何更新Azure表存储中的实体?

问题描述 投票:0回答:2

如何更新Azure表中的单个实体?

阅读:https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.tableoperation.merge?view=azure-dotnet

它只是表明它合并了实体。

它是如何合并的?

哪些属性被覆盖,哪些不是?

是否会更新值为null的实体属性?

是的,不,也许吧?

c# azure azure-table-storage
2个回答
2
投票

要了解Merge操作的工作原理,请考虑此示例。

假设您有一个如下所示的实体:

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1"

Attribute2: "Value 2"

现在您要更新该实体。你要做的是改变Attribute1的值并添加一个新的属性Attribute3

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1 (Updated)"

Attribute3: "Value 3"

使用Merge更新实体后,生成的实体将是:

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1 (Updated)"

Attribute2: "Value 2"

Attribute3: "Value 3"

总结Merge操作:

  • 将更新原始实体和更新实体中存在的任何属性。
  • 原始实体中存在但未更新实体的任何属性都不会更改。
  • 将添加原始实体中不存在但存在于更新实体中的任何属性。

请注意,还有Replace Entity操作,它用更新的实体替换原始实体。因此,使用相同的示例,如果使用Replace Entity操作更新实体,则生成的实体将是:

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1 (Updated)"

Attribute3: "Value 3"

总结Replace操作:

  • 将更新原始实体和更新实体中存在的任何属性。
  • 将删除原始实体中存在但未在更新实体中存在的任何属性。
  • 将添加原始实体中不存在但存在于更新实体中的任何属性。

1
投票

根据HTTP API https://docs.microsoft.com/en-us/rest/api/storageservices/merge-entity

Table服务不会保留属性的空值。指定具有null值的属性等同于在请求中省略该属性。 Merge Entity操作仅更新具有非空值的属性。

假设这也适用于C#SDK。

© www.soinside.com 2019 - 2024. All rights reserved.