Использование обобщений для кэширования в Entity Framework - PullRequest
0 голосов
/ 07 сентября 2011

Я использую шаблон Cache с Entity Framework, и моя проблема в том, что для службы кэширования Azure мне нужны данные, сериализованные.Что в основном означает, что мне нужно вызвать ToList(), чтобы иметь возможность передавать данные в кэш (см. Комментарий в коде, чтобы найти правильную строку).

Данные 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;
}

Спасибо!

1 Ответ

2 голосов
/ 07 сентября 2011

Как уже указано в Entity Framework: ObjectSet и его (обобщенные) отклонения использовать OfType<T> способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...