2011-09-07 2 views
0

Я использую шаблон 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; 
} 

Спасибо!

+0

Что такое 'T' в этом методе? –

+0

Он должен быть ObjectSet , а T в этом контексте означает, например, ObjectSet . Я не очень хорошо разбираюсь в дженериках, но я вижу, что это может быть решением проблемы. – Tx3

ответ

Смежные вопросы