如何更新Azure表中的单个实体?
它只是表明它合并了实体。
它是如何合并的?
哪些属性被覆盖,哪些不是?
是否会更新值为null的实体属性?
是的,不,也许吧?
要了解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:
Table服务不会保留属性的空值。指定具有null值的属性等同于在请求中省略该属性。 Merge Entity操作仅更新具有非空值的属性。
假设这也适用于C#SDK。