【问题标题】:How do I update an entity in Azure Table Storage?如何更新 Azure 表存储中的实体?
【发布时间】:2019-02-20 14:31:55
【问题描述】:

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

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

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

它是如何合并的?

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

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

是的,不,也许吧?

【问题讨论】:

    标签: c# azure azure-table-storage


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      表服务不会为属性保留空值。 指定具有 null 值的属性等同于省略 请求中的属性。只有具有非空值的属性才会 由合并实体操作更新。

      假设这也适用于 C# SDK。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-19
        • 2023-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        相关资源
        最近更新 更多