/ / समेकन, परमाणु, और इकाई फ्रेमवर्क में अलगाव - इकाई-ढांचा, समवर्ती, लेनदेन, ef-code-first, अलगाव-स्तर

समेकन, परमाणु, और इकाई फ्रेमवर्क में अलगाव - इकाई-ढांचा, समवर्ती, लेनदेन, ef-code-first, अलगाव-स्तर

कुछ समय-समय पर और समवर्ती रूप से आधारितआने वाले डेटा, मैं एक ऑपरेशन कर रहा हूं जो या तो तालिका में एक नई पंक्ति डालेगा, या एक ही पंक्ति में मौजूदा पंक्ति को अपडेट करेगा। चाहे वह पंक्ति को सम्मिलित या अद्यतन करता है, मौजूदा पंक्तियों के राज्यों पर निर्भर है। इसलिए, इस ऑपरेशन का नतीजा इस ऑपरेशन के पिछले रनों से प्रभावित होगा, और बाद के रनों को प्रभावित करेगा। मुझे लेनदेन, या ताले या कुछ का उपयोग करके परमाणुता / अलगाव सुनिश्चित करने की आवश्यकता है। ऐसा लगता है कि एंटीटी फ्रेमवर्क (और I) के साथ कई विकल्प और चेतावनी हैं। "सामान्य रूप से डेटाबेस सामान के साथ पूर्ण नौसिखिया भी) कि मुझे नहीं पता कि मुझे किस दिशा में आगे बढ़ना चाहिए। TransactionScope, BeginTransaction, परिवेश लेनदेन? Serializable या दोहराने योग्य पढ़ें? SaveChanges और AcceptAllChanges? क्या मुझे कुछ भी विशेष करने की ज़रूरत है? तथ्य यह है कि एक नई पंक्ति को जोड़ा जा सकता है, विशेष रूप से प्रेत पंक्तियों के बारे में मुझे चिंता करता है, हालांकि मैं मुश्किल से समझता हूं कि इसका क्या अर्थ है। इस विषय पर किसी भी मार्गदर्शन की सराहना की जाएगी।

उत्तर:

उत्तर № 1 के लिए 1

यह ट्यूटोरियल आपके लिए उपयोगी हो सकता है - http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application

उद्धरण:

निराशावादी सहमति (लॉकिंग)

अगर आपके आवेदन को रोकने की जरूरत हैआकस्मिक डेटा हानि में समवर्ती परिदृश्य, ऐसा करने का एक तरीका डेटाबेस ताले का उपयोग करना है। इसे निराशावादी समेकन कहा जाता है। उदाहरण के लिए, आप पढ़ने से पहले डेटाबेस से पंक्ति, आप केवल पढ़ने के लिए या अद्यतन के लिए लॉक का अनुरोध करते हैं पहुंच। यदि आप अद्यतन पहुंच के लिए पंक्ति को लॉक करते हैं, तो कोई अन्य उपयोगकर्ता नहीं है पंक्ति को केवल पढ़ने के लिए या केवल पहुंच के लिए लॉक करने की अनुमति है, क्योंकि उन्हें डेटा की एक प्रति प्राप्त होगी जो "बदलने की प्रक्रिया में है। यदि आप केवल पढ़ने के लिए एक पंक्ति को लॉक करते हैं, तो अन्य इसे भी लॉक कर सकते हैं केवल पढ़ने के लिए उपयोग लेकिन अद्यतन के लिए नहीं। प्रबंधन ताले कुछ है नुकसान। यह कार्यक्रम के लिए जटिल हो सकता है। यह महत्वपूर्ण की आवश्यकता है डेटाबेस प्रबंधन संसाधन, और यह प्रदर्शन समस्याओं का कारण बन सकता है क्योंकि आवेदन के उपयोगकर्ताओं की संख्या बढ़ जाती है (यानी, यह है "अच्छी तरह से स्केल नहीं करता है)। इन कारणों से, सभी डेटाबेस प्रबंधन नहीं सिस्टम निराशावादी समेकन का समर्थन करते हैं। इकाई फ्रेमवर्क प्रदान करता है इसके लिए कोई अंतर्निहित समर्थन नहीं है, और यह ट्यूटोरियल आपको यह दिखाने के लिए नहीं दिखाता है कि कैसे करें इसे लागू करो।

आशावादी Concurrency

निराशावादी समेकन का विकल्प हैआशावादी समेकन। आशावादी समेकन का मतलब है कि समवर्ती संघर्ष होने की अनुमति है, और फिर अगर वे करते हैं तो उचित प्रतिक्रिया दे रहे हैं। उदाहरण के लिए, जॉन रन करता है विभाग पृष्ठ संपादित करें, अंग्रेजी के लिए बजट राशि बदलता है $ 350,000.00 से $ 100,000.00 तक विभाग। (जॉन एक प्रशासित करता है प्रतिस्पर्धी विभाग और अपने लिए पैसे मुक्त करना चाहता है विभाग।) *

ट्यूटोरियल में दोनों मॉडलों के लिए कोड उदाहरण हैं।