Как получить несколько типов сущностей с помощью одного запроса к Azure Table Storage?

Я пытаюсь понять, как работает хранилище таблиц Azure для создания каналов в стиле facebook, и я застрял в том, как получить записи.

(Мои вопросы почти такие же, как https://stackoverflow.com/questions/6843689/retrieve-multiple-type-of-entities-from-azure-table-storage, но ссылка в ответе не работает.)

Это мой предполагаемый подход:

  1. Создайте личную ленту для всех пользователей в моем приложении, которая может содержать различные типы записей (уведомление, обновление статуса и т. д.) Моя идея состоит в том, чтобы хранить их в таблице Azure, сгруппированной по ключу секции для каждого пользователя.

  2. Извлекать все записи в пределах одного ключа секции и передавать их в разные представления в зависимости от типа записи.

Как запросить хранилище таблиц для всех типов того же базового типа сохраняя при этом свои уникальные свойства?

Для CloudTableQueryтребуется типизированный объект, если я укажу 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; }
}

Мой запрос на фид:

List 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

    }

}

6
задан Community 23 May 2017 в 12:24
поделиться