如何使用Azure Table Storage的单个查询检索多种类型的实体?

Jon*_*ved 5 c# azure nosql azure-table-storage

我正在尝试了解Azure表存储如何工作以创建Facebook样式的源,我仍然坚持如何检索条目.

(我的问题几乎与/sf/ask/479058261/相同,但答案中的链接已被破坏.)

这是我的预期方法:

  1. 为我的应用程序中的所有用户创建个人订阅源,其中包含不同类型的条目(通知,状态更新等).我的想法是将它们存储在按每个用户的分区键分组的Azure表中.

  2. 检索同一分区键中的所有条目,并根据条目类型将其传递给不同的视图.

如何在保留其唯一属性的同时查询所有类型的相同基类型的表存储?

CloudTableQuery<TElement>需要一个类型化的实体,如果我指定EntryBase为通用的说法我没有得到具体的入门性质(NotificationSpecificProperty,StatusUpdateSpecificProperty),反之亦然.

我的实体:

public class EntryBase : TableServiceEntity
{
    public EntryBase()
    {


    }
    public EntryBase(string partitionKey, string rowKey)
    {
        this.PartitionKey = partitionKey;
        this.RowKey = rowKey;
    }
}


public class NotificationEntry : EntryBase
{
    public string NotificationSpecificProperty { get; set; }
}

public class StatusUpdateEntry : EntryBase
{
    public string StatusUpdateSpecificProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我对Feed的查询:

List<AbstractFeedEntry> entries = // how do I fetch all entries?

foreach (var item in entries)
{

    if(item.GetType() == typeof(NotificationEntry)){

        // handle notification

    }else if(item.GetType() == typeof(StatusUpdateEntry)){

        // handle status update

    }

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ved 6

最后有官方的方式!:)

查看NoSQL示例,该示例在Azure存储团队博客的此链接中完成此操作:

Windows Azure存储客户端库2.0表深入了解