2012-10-24 12 views
9

विजुअल स्टूडियो 2010 ईएफ 4 में, मैं डेटाबेस तालिका में एक नया कॉलम जोड़ सकता हूं, फिर मेरे .edmx पर 'डेटाबेस से मॉडल अपडेट करें' पर क्लिक करें और सब दुनिया में अच्छा था।वीएस 2012 - ईएफ 5.0 - डेटाबेस से मॉडल अपडेट करें - तालिका में बदलाव नहीं उठा रहा

विजुअल स्टूडियो 2012 ईएफ 5 में, मैं एक तालिका बदलता हूं, और फिर 'डेटाबेस से मॉडल अपडेट करें' पर क्लिक करता हूं और यह अब व्यक्तिगत तालिकाओं में परिवर्तन नहीं उठाता है।

क्या मुझे कुछ याद आ रहा है ... या यह वीएस2012 का एक नया 'फीचर' है?

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

+2

यह 2010 और 2008 के तहत भी हमेशा quirky रहा है। कुछ प्रकार के परिवर्तन मॉडल पर वापस प्रचारित नहीं किया गया है। शायद यह उन मामलों में से एक है? –

+1

मैंने सुना है, लेकिन कम से कम यह एक टेबल अपडेट करने के लिए 2010 के तहत काम करता था और एडीएमएक्स इसे उठाएगा। यह मुझे LINQ दिनों में वापस ले जाता है, जहां आपको आइटम को हटाना होगा और फिर इसे वापस जोड़ना होगा ... ugh – c0d3p03t

+0

जैसा मैंने कहा था, यह हमेशा ऐसा नहीं करता था। और आपको अक्सर ऑब्जेक्ट को मैन्युअल रूप से अपडेट करना होगा, या हटाएं और फिर से जोड़ना होगा। –

उत्तर

2

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

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

संक्षेप में, आपको इकाई को हटाने की आवश्यकता नहीं है, लेकिन सरल संस्थाओं के लिए ऐसा करना आसान हो सकता है।

+0

उत्तर नहीं मैं उम्मीद कर रहा था लेकिन यह मदद करता है, धन्यवाद! – c0d3p03t

+0

मुझे पता है, कम से कम कहने के लिए यह एक परेशानी है। मुझे लगता है कि ऐसा इसलिए है क्योंकि जब आप इसे जोड़ते थे, तब आप इकाई में अतिरिक्त परिवर्तन कर सकते थे, और जब आपने इसे रीफ्रेश किया था, लेकिन क्या यह केवल हैश चेक तुलना नहीं होनी चाहिए? मुझे यकीन है कि एडीओ.NET टीम के कारण हैं। –

8

हां, यह अभी भी वीएस2012 में काम करता है। क्या आप डिफ़ॉल्ट कोड पीढ़ी का उपयोग कर रहे हैं या क्या आपके पास टीटी फाइल है? ऐसा हो सकता है कि इसे ईडीएमएक्स में जोड़ा जा रहा है लेकिन आपकी कक्षा फाइलों को अपडेट नहीं किया जा रहा है।

ईडीएमएक्स फ़ाइल या समाधान एक्सप्लोरर में प्रासंगिक टीटी फ़ाइल पर राइट-क्लिक करने का प्रयास करें और यह सुनिश्चित करने के लिए "कस्टम टूल चलाएं" चुनें कि यह पुन: उत्पन्न हो रहा है।

+0

वह वास्तव में कक्षाओं का पुनर्निर्माण करता है और .edmx फ़ाइल में परिवर्तन उठाता है। हालांकि, अगर मैं एक टेबल बदलता हूं तो यह अभी भी उन परिवर्तनों को नहीं उठा रहा है। यहां देखें: [स्क्रीनशॉट] (http://screencast.com/t/fahh6WqNYZ) – c0d3p03t

+0

नए कॉलम वाली तालिका "एड" टैब के नीचे दिखाई नहीं देगी; वे "ताज़ा करें" टैब पर होंगे। क्या आपकी तालिका उस टैब में रीफ्रेश के तहत सूचीबद्ध है? मौजूदा तालिका में एक नया कॉलम जोड़ना * हमेशा * 2010 और 2012 के तहत मेरे लिए काम करता है। लेकिन हाँ, जो इसे एक तरफ WAAAY को एक तरफ रखता है, एक नई 2012 सुविधा है :) –

+0

+1 "कस्टम टूल चलाएं" – ADOConnection

0

मेरे पास एक समान/एक ही समस्या थी, और मैंने मॉडल से तालिका हटा दी, फिर "डेटाबेस से मॉडल अपडेट करें" चुना। यह फिर से काम नहीं किया, और मैं तालिका में जोड़े गए नए कॉलम तक नहीं पहुंच सका।

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

0

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

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