2011-10-03 10 views
6

私は、asp.netの可能なキャッシュの依存関係に疑問を抱いています。私はそれらの使い方がわかりません。2つ以上の他のキャッシュ項目からのCacheDependency。 (ASP.NET MVC3)

HttpRuntime.Cacheに項目を追加したいのですが、キャッシュ内の他の要素を変更すると要素が無効になるはずです。依存関係はキーで定義する必要があります。

私はこのような機能が欲しい:

public MyObject LoadFromCache(string itemDescriptor, IEnumerable<string> dependencies) 
{ 
    var ret = HttpRuntime.Cache[itemDescriptor] as MyObject; 
    if (ret == null) 
    { 
     ret = LoadFromDataBase(itemDescriptor); 

     //this is the part I'm not able to figure out. Adding more than one dependency items. 
     var dep = new CacheDependency(); 
     dependencies.ForEach(o => dep.SomeHowAdd(o)); 

     HttpRuntime.Cache.Add(
      itemDescriptor, 
      ret, 
      dependencies, 
      System.Web.Caching.Cache.NoAbsoluteExpiration, 
      System.Web.Caching.Cache.NoSlidingExpiration, 
      Caching.CacheItemPriority.Normal, 
      null 
     ); 
    } 
    return ret; 
} 

は、このいずれかに私を助けて。

答えて

7

CacheDependencyコンストラクタhereを見ると、2番目のパラメータがキャッシュキーの配列であることがわかります。そのため、キャッシュされたアイテムのいずれかが変更された場合、全体依存関係が変更され、従属項目も無効になります。これは何とか仕事に失敗した

String[] cacheKeys = new string[]{"cacheKey1","cacheKey2"}; 
var dep = New CacheDependency("", cacheKeys); 

HttpRuntime.Cache.Add(itemDescriptor, ret, dep ...); 
+0

だからあなたのコードは次のようなものになるだろう。私はいくつかのテストケースを作る必要があります。 – SoonDead

+0

私の悪いです。できます。 – SoonDead

関連する問題