2011-10-03 17 views
6

Estoy un poco desconcertado sobre las posibles dependencias de caché en asp.net, y no estoy seguro de cómo usarlas.CacheDependency de 2 o más elementos de caché. (ASP.NET MVC3)

Me gustaría agregar elementos al HttpRuntime.Cache de manera que los elementos se invaliden si cambio otros elementos en el caché. Las dependencias deben estar definidas por la clave.

Quiero una función como esta:

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

me ayude a cabo en este caso.

Respuesta

7

No sabía que podía hacer esto, pero si mira el constructor de CacheDependency here, puede ver que el segundo parámetro es una matriz de claves de caché, de modo que si cualquiera de esos elementos en caché cambia, el conjunto la dependencia será cambiada y su artículo dependiente será invalidado también.

lo que el código sería algo así como:

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

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

Esto de alguna manera no funciona. Necesito hacer algunos casos de prueba más. – SoonDead

+0

Mi mal. Funciona. – SoonDead

Cuestiones relacionadas