2011-09-07 15 views
0

私は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

答えて

関連する問題