Я использую шаблон Cache с Entity Framework, и моя проблема в том, что для службы кеширования Azure мне нужны данные, сериализованные. Что в основном означает, что мне нужно позвонить ToList()
, чтобы иметь возможность передавать данные в кеш (см. Комментарий в коде, чтобы найти правильную строку).Использование генериков для кэширования в Entity Framework
Данные объекта Entity Framework находятся в ObjectSet<T>
, а его базовый класс - System.Data.Objects.ObjectQuery<TEntity>
. Должен ли я как-то сказать в определении метода (RetrieveCachedData), что T основан на этом или как я могу получить доступ к методу ToList
?
protected T RetrieveCachedData<T>(string cacheKey, Func<T> fallbackFunction, CacheItemPolicy cachePolicy) where T : class
{
var cache = new AzureCache().GetCache();
var data = cache.Get(cacheKey) as T;
if (data != null)
{
return data;
}
data = fallbackFunction();
if (data != null)
{
// I need to call .ToList() here to be able to add it to the cache
cache.Add(cacheKey, data);
}
return data;
}
Спасибо!
Что такое 'T' в этом методе? –
Он должен быть ObjectSet, а T в этом контексте означает, например, ObjectSet . Я не очень хорошо разбираюсь в дженериках, но я вижу, что это может быть решением проблемы. –
Tx3