Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एंटिटी फ्रेमवर्क के साथ परमाणु वृद्धि

इकाई ढांचे के साथ आप इसे "परमाणु" ऑपरेशन नहीं बना सकते हैं। आपके पास चरण हैं:

  1. डेटाबेस से इकाई लोड करें
  2. स्मृति में काउंटर बदलें
  3. परिवर्तित निकाय को डेटाबेस में सहेजें

इन चरणों के बीच कोई अन्य क्लाइंट उस डेटाबेस से इकाई को लोड कर सकता है जिसका अभी भी पुराना मान है।

इस स्थिति से निपटने का सबसे अच्छा तरीका है आशावादी समरूपता . का उपयोग करना . इसका मूल रूप से मतलब है कि चरण 3 में परिवर्तन सहेजा नहीं जाएगा यदि काउंटर अब पहले जैसा नहीं है जब आपने चरण 1 में इकाई को लोड किया था। इसके बजाय आपको एक अपवाद मिलेगा जिसे आप इकाई को पुनः लोड करके संभाल सकते हैं और परिवर्तन को फिर से लागू करना।

कार्यप्रवाह इस तरह दिखेगा:

  • Work में इकाई WordCount संपत्ति को एक समवर्ती टोकन के रूप में चिह्नित किया जाना चाहिए (कोड-फर्स्ट के मामले में एनोटेशन या धाराप्रवाह एपीआई)
  • डेटाबेस से इकाई लोड करें
  • स्मृति में काउंटर बदलें
  • कॉल करें SaveChanges try-catch . में DbUpdateConcurrencyException . प्रकार के अपवादों को ब्लॉक करें और पकड़ें
  • यदि कोई अपवाद होता है, तो इकाई को catch में पुनः लोड करें डेटाबेस से ब्लॉक करें, परिवर्तन को फिर से लागू करें और SaveChanges . पर कॉल करें फिर से
  • आखिरी चरण तब तक दोहराएं जब तक कि कोई अपवाद न हो

इस उत्तर में आप इस प्रक्रिया के लिए एक कोड उदाहरण पा सकते हैं (DbContext . का उपयोग करके) )।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql में एक कॉलम का नाम बदलने में इतना समय क्यों लगता है?

  2. मैं MySQL में एक सरणी चर का अनुकरण कैसे कर सकता हूं?

  3. पीडीओ का उपयोग करके MySQL से संख्यात्मक प्रकार कैसे प्राप्त करें?

  4. क्या मेरी साइट पर प्रत्येक उपयोगकर्ता को एक MySQL डेटाबेस असाइन करना अनुचित है?

  5. लंबी PHP स्क्रिप्ट चलाते समय मैं मेमोरी को कैसे साफ़ कर सकता हूँ? अनसेट करने की कोशिश की ()