मेरे तालिका Sections
(SQL सर्वर) ID
एक प्राथमिक कुंजी (int, identity)
और SortIndex
स्तंभ (पूर्णांक) के रूप में है के द्वारा संशोधित किया गया है अपडेट नहीं होता।इकाई की रूपरेखा मूल्य जो प्रयोजनों छँटाई के लिए एक ट्रिगर
डेटाबेस में एक ट्रिगर है जो प्रत्येक INSERT
पर SortIndex := ID
सेट करता है। जाहिर है, मैं दो पंक्तियों के मानों को स्वैप करके, सॉर्टिंग इंडेक्स को बाद में बदलना चाहता हूं।
मैं एंटिटी फ्रेमवर्क का उपयोग कर डेटा तक पहुंचता हूं, सभी एमवीसी 3 वेब एप्लिकेशन के साथ।
समस्या यह है कि, तालिका में कोई नई वस्तु डालने के बाद इकाई फ्रेमवर्क SortIndex
के मान को अपडेट नहीं करता है। यह सभी डेटा को भी कैश करता है, इसलिए इस तालिका से सभी ऑब्जेक्ट्स प्राप्त करने के लिए निम्न कॉल इस ऑब्जेक्ट के लिए गलत SortIndex
मान भी देगा।
मैंने EDMX
में इस कॉलम के लिए StoreGeneratedPattern
बदलने की कोशिश की। यह बहुत अच्छा और सुरुचिपूर्ण प्रतीत होता है लेकिन समस्या का समाधान नहीं करता है।
यदि मैं Identity
पर सेट करता हूं, तो यह ईएफ को मूल्य को सही तरीके से अपडेट करने का कारण बनता है, लेकिन यह केवल पढ़ा जाता है (बदलने की कोशिश करते समय अपवाद फेंक दिया जाता है)। इसे Computed
पर सेट करना समान है, लेकिन अपवाद के बजाय मूल्यों को डीबी को नहीं लिखा गया है।
मैं अगर मैं एक वस्तु डालने के बाद इसे उपयोग करने की आवश्यकता एफई वस्तु हर बार पुन: कर सकते हैं, बस ऐसा करके:
DatabaseEntities db = new DatabaseEntities()
लेकिन यह मेरे लिए बदसूरत वैकल्पिक हल की तरह लगता है।
इस समस्या का समाधान क्या है?
स्पष्ट रूप से कुछ, मुझे insert
के बाद कुछ कार्रवाई करने की आवश्यकता नहीं है (और यह जोखिम लेना कि यह भूल गया है और अनजान है) को प्राथमिकता दी जाती है।
संभावित डुप्लिकेट: http://stackoverflow.com/questions
अगर कोई रुचि है, यह, एफई आंशिक वर्ग और उसके बाद आंशिक विधि
OnContextCreated
जोड़ने के लिए यहाँ की तरह से कुछ और करने के लिएMergeOption
डिफ़ॉल्ट बनाने के लिए संभव है/5445243/पुनः लोड-फ़ील्ड-वैल्यू-संशोधित-इन-डीबी-बाय-ट्रिगर-बाद-सम्मिलित-अद्यतन –यह समान है, लेकिन ऐसा लगता है कि उसे ऐसा फ़ील्ड है जिसे उसे लिखने की आवश्यकता नहीं है। "गणना" उसके लिए ठीक होना चाहिए। यह कुछ बग के कारण काम नहीं करता है। – Arek