Azure TableServiceEntity - 存储复杂的类

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

通过 TableServiceEntity 在 Azure 表服务中存储数据,您仅限于具有公共 get/set 的常用基本类型(int、string、datetime 等)。

处理集合、复杂类型、继承等的序列化并没有你所期望的常见魔法。

处理此问题的不同方法可能是

我错过了什么吗?在什么情况下哪种方法可能是最好的?

c# azure azure-table-storage
1个回答
5
投票

ATS 支持继承。已实现的具体类中的所有继承属性都将被持久化和检索。不过复杂类型确实不支持。

至少还有一种方法可以处理对象树和对象关系的持久性: 将相关对象分别存储在不同的PartitionKey/RowKey下。

实现该方法的最简单(强力)方法可能需要您多次调用 ATS,以便您可以正确反序列化对象。

如果针对存储执行的事务数量比所使用的存储空间和带宽更重要,则该方法的更优雅的扩展是为您的实体实现接口并创建一个实现所有这些接口的“宽”联合实体 - 并且这就是存储和检索的人。检索到的每个 Union 对象仅通过特定接口使用。您可以通过这种方式存储集合以及简单相关的实体 - 只需确保您的 PartitionKey 对于与 Union 对象相关的每个人都是相同的,并且您有一种方法来识别哪个 Union 对象代表哪种实体类型。

HTH

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