繁体   English   中英

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

[英]How do I update an entity in Azure Table Storage?

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

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

它只是简单地说它合并了实体。

它如何合并?

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

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

是的,不,也许吗?

要了解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操作:

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

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

表服务不会保留属性的空值。 指定具有空值的属性等同于在请求中省略该属性。 合并实体操作将仅更新具有非空值的属性。

假设这也适用于C#SDK。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM