2011-10-03 3 views
6

나는 asp.net에서 가능한 cachedependencies에 의아해하고, 나는 그들을 사용하는 방법을 잘 모르겠습니다.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을 보면 두 번째 매개 변수가 캐시 키 배열이므로 캐시 된 항목이 변경되면 전체 종속성이 변경되고 종속 항목도 무효화됩니다. 이것은 어떻게 든 작동하지

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

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

:

그래서 코드는 같은 것이다. 좀 더 테스트 케이스를 만들어야합니다. – SoonDead

+0

제 잘못입니다. 그것은 작동합니다. – SoonDead

관련 문제