2011-10-03 13 views
6

मैं एएसपीनेट में संभावित कैश्ड निर्भरताओं पर थोड़ा परेशान हूं, और मुझे यकीन नहीं है कि उनका उपयोग कैसे करें।2 या अधिक कैश आइटम से कैश पर निर्भरता। (एएसपी.नेट एमवीसी 3)

मैं HttpRuntime में आइटम जोड़ना चाहता हूं। इस तरह से कैश करें, यदि कैश में अन्य तत्व बदलते हैं तो तत्वों को अमान्य करना चाहिए। निर्भरता कुंजी द्वारा परिभाषित किया जाना चाहिए। इस पर बाहर

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

मुझे नहीं पता था कि आप यह कर सकते हैं, लेकिन यदि आप कैश पर निर्भरता निर्माता here देखते हैं, तो आप देख सकते हैं कि दूसरा पैरामीटर कैश कुंजी की एक सरणी है, ताकि यदि इनमें से कोई भी कैश किए गए आइटम बदल जाए, तो पूरा निर्भरता बदल दी जाएगी और आपकी आश्रित वस्तु भी अमान्य हो जाएगी।

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

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

यह किसी भी तरह काम करने के लिए विफल रहता है:

तो अपने कोड की तरह कुछ होगा। मुझे कुछ और परीक्षण मामले बनाने की जरूरत है। – SoonDead

+0

मेरा बुरा। यह काम करता हैं। – SoonDead

संबंधित मुद्दे