7

मैं स्व-ट्रैकिंग इकाई टी 4 टेम्पलेट्स के साथ इकाई फ्रेमवर्क का उपयोग कर रहा हूं, जो डिफ़ॉल्ट रूप से एक SQL क्वेरी उत्पन्न करेगा जो एक अद्यतन क्वेरी में इकाई पर सभी गुणों को सेट करेगा। मैं केवल एक अद्यतन कथन चाहता हूं जिसमें गुण संशोधित हों।एसक्यूएल जेनरेट में संशोधित गुणों को केवल अद्यतन करने के लिए मैं एंटिटी फ्रेमवर्क कैसे प्राप्त करूं?

OriginalValueMembers originalValueMembers = new OriginalValueMembers(false, metadataWorkspace, ef); 

इकाई के बजाय प्रत्येक संपत्ति परिवर्तन को ट्रैक करना: Entity Framework Recipes: A Problem-Solution Approach पेज 503.

मैं टी -4 टेम्पलेट में इस लाइन को बदल दिया है:

मैं किताब में विनिर्दिष्ट टी -4 खाका संशोधित सिर्फ यह ट्रैक करना कि इकाई बदल गई है।

और यह भी

context.ObjectStateManager.ChangeObjectState(entity, EntityState.Unchanged); 

इन परिवर्तन करने के बाद मैं केवल संशोधित मूल्यों/अद्यतन बयान में गुणों के साथ SQL विवरण के वांछित परिणाम मिल गया। हालांकि, एक अजीब दुष्प्रभाव था। एक शून्य से आईएनटी संपत्ति को शून्य से कुछ और शून्य से अद्यतन करते समय, उसमें परिवर्तन को इकाई फ्रेमवर्क द्वारा अनदेखा किया गया था। स्व-ट्रैकिंग मॉडल चेंजट्रैकर में सटीक OriginalValue शून्य के साथ परिवर्तन दिखाते हैं, लेकिन जब इकाई फ्रेमवर्क ने UPDATE SQL उत्पन्न करने का प्रयास किया तो यह नहीं देखा कि मूल मान शून्य और नया मान शून्य नहीं है, तो उस संपत्ति में परिवर्तन नहीं होता है। मैंने काम किया अगर मूल मूल्य शून्य नहीं था और मूल्य बदल जाता है।

ऐसा लगता है कि एक स्ट्रिंग प्रॉपर्टी पर शून्य से गैर-शून्य मान पर जा रहा है, लेकिन int? काम नहीं कर रहा।

क्या किसी के पास कोई विचार है?

+0

यदि आप कोड या एक्सएमएल पोस्ट करते हैं, ** कृपया ** टेक्स्ट एडिटर में उन पंक्तियों को हाइलाइट करें और संपादक टूलबार पर "कोड" बटन (101 010) पर क्लिक करें ताकि इसे अच्छी तरह प्रारूपित किया जा सके और इसे हाइलाइट किया जा सके! –

+1

एसटीई टेम्पलेट में एक बग हो सकता है। यह चर्चा http://stackoverflow.com/questions/3598550/are-nullable-foreign-keys-allowed-in-entity-framework-4/3601768 –

+0

मेरी तालिका में शामिल एक विदेशी कुंजी नहीं हो सकती है I का उपयोग करते हुए। यह कोई विदेशी कुंजी के साथ सिर्फ 1 इकाई है। उपरोक्त आपका लिंक एक ही समस्या प्रतीत होता है, लेकिन अभी भी कोई समाधान नहीं है। –

उत्तर

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