2011-09-07 73 views
0

我正在使用實體框架的緩存模式,我的問題是Azure緩存服務需要數據序列化。這基本上意味着我需要調用ToList()才能將數據發送到緩存(請參閱代碼中的註釋以找到正確的行)。在實體框架中使用泛型進行緩存

實體框架的數據在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

回答