2011-10-03 4 views
6

Sono un po 'perplesso sulle possibili dipendenze in asp.net, e non sono sicuro di come usarle.CacheDipendenza da 2 o più altri elementi della cache. (ASP.NET MVC3)

Vorrei aggiungere elementi a HttpRuntime.Cache in un modo, che gli elementi dovrebbero invalidare se cambio altri elementi nella cache. Le dipendenze dovrebbero essere definite dalla chiave.

voglio una funzione come questa:

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; 
} 

darmi una mano su questo.

risposta

7

Non sapevo che si potesse fare questo, ma se si guarda il costruttore CacheDependency here, si può vedere che il secondo parametro è un array di chiavi di cache, in modo che se qualcuno di quegli elementi memorizzati nella cache cambia, l'intero la dipendenza verrà modificata e anche l'elemento dipendente verrà invalidato.

Così il vostro codice sarebbe qualcosa di simile:

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

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

Questo non riesce in qualche modo a lavorare. Ho bisogno di fare un paio di casi di test. – SoonDead

+0

Il mio male. Funziona. – SoonDead

Problemi correlati