Я пытаюсь понять, как работает хранилище таблиц Azure для создания каналов в стиле facebook, и я застрял в том, как получить записи.
(Мои вопросы почти такие же, как https://stackoverflow.com/questions/6843689/retrieve-multiple-type-of-entities-from-azure-table-storage, но ссылка в ответе не работает.)
Это мой предполагаемый подход:
Создайте личную ленту для всех пользователей в моем приложении, которая может содержать различные типы записей (уведомление, обновление статуса и т. д.) Моя идея состоит в том, чтобы хранить их в таблице Azure, сгруппированной по ключу секции для каждого пользователя.
Извлекать все записи в пределах одного ключа секции и передавать их в разные представления в зависимости от типа записи.
Как запросить хранилище таблиц для всех типов того же базового типа сохраняя при этом свои уникальные свойства?
Для 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
}
}