2013-08-08 7 views
6

अद्यतन करता हूं तो विजुअल स्टूडियो मेरी कक्षाओं को क्यों हटाता है जब मैं अपना ईएफ मॉडल (ver 5) अपडेट करता हूं तो मुझे एक अजीब समस्या आ रही है। यह उस मॉडल से संबंधित सभी वर्गों को हटा देता है।जब मैं इकाई फ्रेमवर्क मॉडल

मेरी स्थिति इस तरह थी। मैंने दो टेबलों के मुख्य कॉलम को बदल दिया जिनमें मेरी प्राथमिक तालिका के संदर्भ हैं। मॉडल को अपडेट करने से इन परिवर्तनों को edmx में नहीं बनाया गया, इसलिए मैंने उन तीन तालिकाओं (प्राथमिक और दो लुकअप टेबल) को हटा दिया, edmx को सहेजा। फिर मॉडल को अपडेट किया और उन तालिकाओं को वापस जोड़ा।

एक बार जब मैंने इसे अपडेट करने के बाद मॉडल को सहेज लिया, तो वीएस ने इस एडीएमएक्स के लिए सभी क्लास फाइलों को हटा दिया। एडीएमएक्स अभी भी सभी तालिकाओं के साथ ठीक दिखता है, बस कक्षाएं चली गई हैं। तब मुझे अपने आखिरी बदलावों को वापस करना होगा और पुनः प्रयास करना होगा।

काम करने वाली एक चीज प्रभावित वर्गों में उचित परिवर्तन करने के लिए मैन्युअल रूप से एडीएमएक्स फ़ाइल को संपादित कर रही थी, लेकिन मुझे नहीं पता कि मुझे ऐसा क्यों करना चाहिए।

वहां कोई विचार है?

धन्यवाद!

उत्तर

0

आप निम्न में से एक कोशिश कर सकते:

1) '.edmx' दृश्य स्टूडियो में समाधान Explorer में फ़ाइल पर राइट क्लिक करें और फिर मेनू आइटम 'भागो कस्टम टूल' का चयन करें।

2) बस समाधान एक्सप्लोरर शीर्षक बार के नीचे, आप टूल टिप 'सभी टेम्पलेट्स को ट्रांसफॉर्म करें' के साथ एक बटन देख सकते हैं। इसे क्लिक करें। इसे अपने मॉडल को 'YourEdmxFileName.tt' फ़ाइल के अंतर्गत अपडेट करना चाहिए।

3) विजुअल स्टूडियो 'बिल्ड' मेनू के तहत, 'सभी टी 4 टेम्पलेट्स को बदलें' का चयन करें।

4) व्यक्तिगत टी 4 टेम्पलेट फाइलों (* .tt) का पता लगाएं, उन पर राइट क्लिक करें और 'कस्टम टूल चलाएं' चुनें।

+0

मैंने "बिल्ड" मेनू के तहत "सभी टी 4 टेम्पलेट्स को ट्रांसफॉर्म" ढूंढना समाप्त कर दिया, लेकिन यह उन एडीएमएक्स का पुनर्निर्माण करने में विफल रहा जिसमें मुझे समस्याएं थीं। अंत में मैंने बस अपना कोड वापस कर दिया और फ़ाइल को मैन्युअल रूप से संपादित किया। – Bauer

+0

में एक ही समस्या है .. बेहद बेवकूफ मुद्दा .. यादृच्छिक रूप से कभी-कभी होता है जब मैं डेटाबेस को रीफ्रेश करने के बाद डेटाबेस से रीफ्रेश करता हूं जैसे शून्य करने योग्य – krilovich

0

वही बात मेरे साथ हुई। मेरे पास स्ट्रिंग वैल्यू वाला एक टेबल था, लेकिन मैं इसे एक विदेशी कुंजी में बदलना चाहता था ताकि मैं एक अलग टेबल में रीकोकुरिंग स्ट्रिंग मानों को स्टोर कर सकूं। तो मैंने एक नई टेबल बनाई और मैंने स्ट्रिंग कॉलम प्रकार को एक शून्य नहीं कर दिया और एक विदेशी कुंजी जोड़ा। जब मैंने मॉडल को अपडेट किया, तो उसने सभी इकाई वर्गों को हटाए गए के रूप में चिह्नित किया ... मजाकिया नहीं।

मैंने कुछ त्रुटियों को भी पॉप अप किया जो इंगित करता है कि ईएफ ने स्तंभ प्रकार को स्ट्रिंग से int में नहीं बदला है।

उपर्युक्त समाधान (कस्टम टूल और सभी टेम्पलेट्स को बदलने) मेरे लिए काम नहीं करते थे।

मेरे लिए समाधान पहले मॉडल में मैन्युअल रूप से स्ट्रिंग से int में कॉलम प्रकार को बदलने और मॉडल को अद्यतन करने के लिए, कोई और समस्या नहीं हुई थी।

रिकॉर्ड के लिए: यह इस समस्या का समाधान दृश्य स्टूडियो 2010

+0

यह रनटाइम संस्करण के साथ विजुअल स्टूडियो 2013 और एंटिटी फ्रेमवर्क संस्करण 6.0.0.0 का उपयोग करके मेरे साथ हुआ v4.0.3031 9 का। मैंने मॉडल को बदलने के बिना बस दो संग्रहीत प्रक्रियाओं को जोड़ा था। _T यह समस्या अतीत में एक दूसरे अवसर पर हुई, बिना किसी मॉडल के बदलाव को देखते हुए। मैं इस तकनीक का उपयोग 2+ सालों से कर रहा हूं ._ @beastieboy, मुझे रन कस्टम टूल फ़ंक्शन के तहत कुछ भी नहीं मिला, और न ही मैंने आपके द्वारा उल्लिखित बटन ढूंढ लिया। –

+0

मैंने एक विदेशी कुंजी संबंध भी जोड़ा था। –

0

आदेश में में एफई 4 में हुआ, मैं मेज परिभाषा फ़ाइलों के सभी बाहर निर्देशिका कि अपने मॉडल में स्थित था से तो चले गए मैं। हटाना वापस करने के लिए टीम एक्सप्लोरर को बताया। यह फ़ाइलों को मेरी निर्देशिका में वापस जोड़ा और मैं आगे बढ़ने में सक्षम था।

+0

मैं tfs का उपयोग नहीं कर रहा था, मैं उपversण का उपयोग कर रहा था। – Bauer

6

ईडीएमएक्स को विदेशी कुंजी (एफके) कॉलम में बदलाव लेने के लिए एक टेबल फिर से जोड़ने के बाद ऐसा होता है।

ऐसा इसलिए होता है क्योंकि अन्य तालिकाओं के रिश्तों को ताज़ा नहीं किया जाता है।

इस उत्तर के अनुसार, https://stackoverflow.com/a/34144341, इसे मैन्युअल रूप से ठीक करने के लिए, "केवल बिल्ड करें" द्वारा त्रुटि सूची फ़िल्टर करें और फिर EDMX संपादक में किसी भी बिल्ड त्रुटियों को मैन्युअल रूप से हल करें। संबंधों की बहुतायत पर ध्यान दें।

वैकल्पिक रूप से, उपयोग संस्करण नियंत्रण पूरी edmx परिवर्तन को वापस लाने और फिर से शुरू है, तो निम्न दृष्टिकोण का उपयोग कर रहे हैं:

के बजाय दूर करने और फिर से जोड़ने केवल FK स्तंभ बदल गया है, को हटाने और फिर से जोड़ युक्त तालिका सभी सारणी जिनके पास किसी भी एफके कॉलम से कोई संबंध है जो बदल गया है।

0

सुनिश्चित करें कि आपके पास _ के नामकरण सम्मेलन के साथ कोई चर नहीं है। यदि कोई है, तो ईएफ असफल हो जाएगा और फिर से सभी कक्षाओं को फिर से लिख देगा।

परिवर्तनीय नाम बदलने से p_ ने मेरी मदद की।

0

मुझे एक ही समस्या थी।

मैं वीएस2013, ईएफ 6 का उपयोग कर, और ओरेकल 11 जी (डेटाबेस पहले) से कनेक्ट कर रहा हूं।

मैंने एक टेबल जोड़ा, जिसकी दूसरी तालिका में एक विदेशी कुंजी थी। किसी कारण से, उन दो तालिकाओं में विदेशी कुंजी प्रकार अलग था।

विदेशी कुंजी प्रकार को अपडेट करना मेरी समस्या का समाधान करता है।

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