जवाबों:
मॉडल को सिंक में रखने के तीन तरीके हैं।
डिजाइनर से संशोधित तालिकाओं को हटाएं, और उन्हें डेटाबेस एक्सप्लोरर से डिजाइनर सतह पर वापस खींचें। मैंने पाया है कि, इसके लिए मज़बूती से काम करने के लिए, आपको यह करना होगा:
ए। डेटाबेस एक्सप्लोरर में डेटाबेस स्कीमा को ताज़ा करें (राइट-क्लिक करें, रिफ्रेश करें)
b। तालिकाओं को हटाने के बाद डिज़ाइनर को सहेजें
c। तालिकाओं को वापस खींचने के बाद फिर से सहेजें।
ध्यान दें कि यदि आपने किसी भी गुण को संशोधित किया है (उदाहरण के लिए, किसी एसोसिएशन की बाल संपत्ति को बंद करना), तो यह स्पष्ट रूप से उन संशोधनों को खो देगा - आपको उन्हें फिर से बनाना होगा।
अपने डेटाबेस से स्कीमा को पुन: उत्पन्न करने के लिए SQLMetal का उपयोग करें। मैंने कई ब्लॉग पोस्ट देखे हैं जो दिखाते हैं कि यह कैसे स्क्रिप्ट करता है ।
DBML के गुण फलक में सीधे परिवर्तन करें। यह साधारण परिवर्तनों के लिए काम करता है, जैसे किसी क्षेत्र पर नल की अनुमति देना।
DBML डिज़ाइनर Visual Studio 2015, 2017 या 2019 में डिफ़ॉल्ट रूप से स्थापित नहीं है। आपको वीएस को बंद करना होगा, वीएस इंस्टॉलर को शुरू करना होगा और अपनी स्थापना को संशोधित करना होगा। एसक्यूएल उपकरणों के लिए LINQ सुविधा आपको स्थापित करना होगा है। वीएस 2017/2019 के लिए, आप इसे व्यक्तिगत घटकों> कोड टूल के तहत पा सकते हैं ।
उदाहरण के लिए, जोड़े गए कॉलम के साथ अपने .dbml-diagram में एक तालिका को अपडेट करने के लिए, यह करें:
आप कोडस्मिथ पर आधारित कोड जेनरेशन टेम्प्लेट के PLINQO सेट की भी जांच कर सकते हैं , जो आपको लाइनक-से-SQL के लिए बहुत सी साफ-सुथरी चीजें करने की अनुमति देता है:
Http://www.plinqo.com पर PLINQO साइट देखें और परिचय वीडियो देखें।
दूसरा उपकरण जो मुझे पता है, वह है हुगति DBML / EDMX उपकरण , जो DBML (Linq-to-SQL) और EDMX (Entity Framework) मैपिंग फ़ाइलों को अपडेट करने की अनुमति देता है, और अधिक (जैसे नामकरण परंपराओं आदि)।
न घुलनेवाली तलछट
हम एक कस्टम लिखित T4 टेम्प्लेट का उपयोग करते हैं जो हमारे सभी .DBML फ़ाइलों में प्रत्येक तालिका के लिए info_schema मॉडल पर गतिशील रूप से प्रश्न करता है, और फिर डेटाबेस से ताज़ा स्कीमा जानकारी के साथ .DBML फ़ाइल के कुछ हिस्सों को अधिलेखित करता है। मैं हूं अत्यधिकइस तरह से एक समाधान को लागू करने की सलाह देते हैं - इसने मुझे समय के oodles को बचाया है, और अपने टेबल को अपने मॉडल से हटाने और फिर से जोड़ने के विपरीत जो आपको अपने संघों को रखने के लिए मिलता है। इस समाधान के साथ, जब आपका स्कीमा बदलता है, तो आपको संकलन-समय की त्रुटियाँ मिलेंगी। आप यह सुनिश्चित करना चाहते हैं कि आप एक संस्करण नियंत्रण प्रणाली का उपयोग कर रहे हैं, क्योंकि अंतर करना वास्तव में आसान है। यदि आप DB स्कीमा पहले दृष्टिकोण के साथ विकसित कर रहे हैं तो यह एक बढ़िया समाधान है। बेशक, मैं अपनी कंपनी का कोड साझा नहीं कर सकता, इसलिए आप इसे स्वयं लिखने के लिए अपने दम पर हैं। लेकिन अगर आप कुछ लाइनक-टू-एक्सएमएल जानते हैं और स्कूल जा सकते हैंइस परियोजना पर , आप जहाँ होना चाहते हैं, वहाँ पहुँच सकते हैं।
मैं VS2008 में निर्मित विज़ुअल डिज़ाइनर का उपयोग करने की सलाह दूंगा, क्योंकि dbml को अपडेट करने से आपके लिए उत्पन्न कोड भी अपडेट हो जाता है। दृश्य डिजाइनर के बाहर dbml को संशोधित करने से अंतर्निहित कोड सिंक से बाहर हो जाएगा।
तालिकाओं को अद्यतन करने के लिए DBML को अद्यतन करने के लिए एक बारीकियों की जरूरत है ... यदि मौजूदा तालिकाओं में परिवर्तन किए जाते हैं, तो विदेशी कुंजी संबंधों को तुरंत हमेशा नहीं लाया जाता है। आसपास का काम परियोजना का निर्माण करना है और फिर से तालिकाओं को फिर से जोड़ना है। मैंने MS को इसकी सूचना दी और इसे VS2010 के लिए तय किया गया।
डीबीएमएल डिस्प्ले नए विदेशी कुंजी बाधाओं को नहीं दिखाता है
ध्यान दें कि मुख्य उत्तर में दिए गए निर्देश स्पष्ट नहीं हैं। तालिका को अद्यतन करने के लिए
संग्रहीत कार्यविधि अद्यतन के मामले में, आपको इसे .dbml फ़ाइल से हटा देना चाहिए और इसे फिर से लिखना चाहिए। लेकिन अगर संग्रहीत प्रक्रिया में दो पथ हैं (उदाहरण: यदि कुछ है; तो कुछ कॉलम प्रदर्शित करें; और कुछ अन्य कॉलम प्रदर्शित करें), सुनिश्चित करें कि दोनों पथों में समान स्तंभ हैं !!! अन्यथा केवल पहला पथ कॉलम मौजूद होगा।
यहां पूरी तरह से चरण-दर-चरण विधि है जो मेरे लिए काम करती है ताकि LINQ को SQL dbml और संबंधित फ़ाइलों को अपडेट करने के लिए एक नया कॉलम शामिल किया जा सके जिसे मैंने डेटाबेस तालिकाओं में से एक में जोड़ा था।
आपको अपने डिज़ाइन की सतह में बदलाव करने की आवश्यकता है जैसा कि ऊपर अन्य ने सुझाव दिया है; हालाँकि, आपको कुछ अतिरिक्त कदम करने की आवश्यकता है। ये हैं पूर्ण चरण:
1. Drag your updated table from Server Explorer onto the design surface
2. Copy the new column from this "new" table to the "old" table (see M463 answer for details on this step)
3. Delete the "new" table that you just dragged over
4. Click and highlight the stored procedure, then delete it
5. Drag the new stored procedure and drop into place.
6. Delete the .designer.vb file in the code-behind of the .dbml
(if you do not delete this, your code-behind containing the schema will
not update even if you rebuild and the new table field will not be included)
7. Clean and Rebuild the solution (this will rebuild the .designer.vb file to include all the new changes!).