डीबी - एएसपी.नेट एमवीसी मारने के बिना डेटा का पुन: उपयोग करना

जटिल कार्य को संशोधित कर रहा हूं जो पहले ही लिखा गया है जहां वे नीचे दिए गए कोड का उपयोग कर रहे हैं:

private List Values()
{
    if (ViewBag.Sample == null)
    {
        ViewBag.Sample = TestData();
    }
}
// where TestData() hits the DB and returns corresponding result

Values() is called multiple places in the same file where this will return by hitting the DB TestData() first time and from next calls it will directly return from ViewBag.

क्या यह एक अच्छा दृष्टिकोण है?

इस परिदृश्य को संभालने के लिए एमवीसी में हमारे पास सभी वैकल्पिक दृष्टिकोण क्या हैं? डीबी हिट एक महंगी कॉल है क्योंकि हमें कुछ अन्य तकनीकों का उपयोग करने की आवश्यकता है।

धन्यवाद

1
"डीबी को मारने के बिना डेटा का पुन: उपयोग करना" - जिसे आमतौर पर 'कैशिंग' कहा जाता है
जोड़ा लेखक Mitch Wheat, स्रोत

6 उत्तर

[OutputCache(Duration = 60)]//Caches for 60 seconds
private List Values()
{
    if (ViewBag.Sample == null)
    {
        ViewBag.Sample = TestData();
    }
}
0
जोड़ा

उस कोड को यह सुनिश्चित करना चाहिए कि विधि को लागू होने पर पहली बार डेटाबेस को स्पर्श करें। यदि एकाधिक पृष्ठों पर एक ही डेटा का उपयोग किया जाता है तो आप कैश- या सत्र वर्ग में भी बहुत कुछ प्राप्त कर सकते हैं।

0
जोड़ा

If size of the data retrieved from database is not very big then you can use Cache

अन्यथा आप सत्र भी।

0
जोड़ा

आपके पास सत्र, कैश जैसे डेटा रखने के विकल्प हैं।

0
जोड़ा

एमवीसी मॉडल बाइंडर

देखें नमूना कोड

0
जोड़ा

आप या तो इस तरह के सत्र में अपना डेटा रख सकते हैं:

Session['*your session key*'] = TestData();

और उसके बाद इसे पुनः प्राप्त करें:

var myData = Session['*your session key*'] as YouObject //cast it to an object if you need to.

या आप कैशिंग का उपयोग कर सकते हैं:

System.Web.HttpRuntime.Cache[cacheKey] = TestData

और पुनः प्राप्त करना:

var myData =System.Web.HttpRuntime.Cache[cacheKey] as YourObject
0
जोड़ा