2011-10-03 71 views
6

我對asp.net中可能的cachedependencies有點困惑,我不知道如何使用它們。CacheDependency來自2個或更多其他緩存項目。 (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,你可以看到第二個參數是緩存鍵的數組,所以如果這些緩存項中的任何一個改變了,整個依賴關係將被改變,你的依賴項也將失效。

所以,你的代碼將是這樣的:

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

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

這在某種程度上無法工作。我需要做更多的測試用例。 – SoonDead

+0

我的不好。有用。 – SoonDead