0

我正在使用一个应用程序,其中从 TableServiceObject 派生的 .NET 类型被保存到 Azure 表存储(称为“Person”)具有另一个实体(“事件”)的集合。当然,集合属性不会保存到 Azure 表存储。

我想做的是在 Person 存储实体上拥有可变数量的属性,并在必要时创建一个新属性。例如,如果 Person1 之前参加过 1 个活动,并且参加了一个新活动,我的代码需要为 Person1 实体创建一个“Event2”属性,并将指向 Event2 存储位置的指针保存在该属性中。Person1 然后有 2 个“事件”属性,但该表中的另一个实体可能有 10 个(event1、event2、event3 ... event10)。

因为 Person 类直接映射到 Azure Tables,它会自动为类中的每个公共属性创建一个属性,所以我找不到一种方法来动态地将 Event2 属性添加到这个保存的实体而不在我的类上创建一个永久属性,我不想这样做。有办法吗?

想要存储这个“参差不齐”的属性集的目的是让我能够获取一个人去过的所有事件,而无需对存储事件的分区进行完整扫描。

谢谢!

更新:Smarx 是正确的——一旦我知道要寻找什么,就很容易找到关于如何在 Azure 表服务中使用 ReadingEntity 和 WritingEntity 事件的描述:http: //convective.wordpress.com/2009/12/ 30/entities-in-azure-tables/

4

1 回答 1

1

我假设您使用的是 .NET,因为您提到了映射到表中实体的类。表存储本身没有架构,所以这完全不是问题。

在没有架构的情况下使用 WCF 数据服务客户端库(位于 Microsoft.WindowsAzure.Storage 下的内容)有点棘手。搜索ReadingEntityWritingEntity与表存储相关,您可能会找到所需的内容。本质上,您需要挂钩这些事件并解析(或注入)您想要的额外属性。人们通常通过创建一个字典属性来处理这些“额外”属性,然后在这些事件触发时读取和写入它们。

您还可以查看http://www.lucifure.com/,这是一个我没有经验的替代客户端库。我相信它也解决了这个限制:“通过字典动态存储,因此您不必将每个表属性映射到类成员。”

于 2012-07-23T23:07:33.820 回答