2013-03-21 6 views
5

के रूप में काम नहीं कर रही है मैंने SQL में डेटाबेस बनाया है और विजुअल स्टूडियो 2012 में एक ईडीएमएक्स बनाया है। यह स्वचालित रूप से पीओसीओ (टीटी) वर्गों का निर्माण करता है। सब ठीक दिखता है।ईएफ में पीओसीओ कक्षा अपेक्षित

अब मैं एक तालिका का कॉलम नाम बदलता हूं। मैं ईडीएमएक्स अपडेट करता हूं। एक्सएमएल में ईडीएमएक्स खोलना और सब ठीक दिखता है।

प्रश्न 1

बाद मैं टीटी में कस्टम उपकरण भाग गया, मुझे लगता है कि एक नया संपत्ति अतिरिक्त बना लिया गया है, जैसे:

SQL table name : Student 

Column name : sName 

मेरी POCO वर्ग

public int sName{ get; set; } 

में स्वचालित रूप से बनाया गया है।

अब मैं

Column name : studentName 

मेरे POCO वर्ग

public int sName{ get; set; } 

public int studentName{ get; set; } 

यह एक बग है करने के लिए एसक्यूएल में स्तंभ नाम बदलने के लिए या मैं इसे ठीक करने के लिए कुछ करने की जरूरत है?

इससे बचने के लिए मुझे क्या करना चाहिए?

प्रश्न 2

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

उत्तर

25

पहले, आपकी समस्या को समझने के लिए, क्या आप जानना चाहते हैं कि EDMX फ़ाइल सिर्फ एक XML फ़ाइल है कि 3 अलग अलग वर्गों में शामिल है:

  • CSDL: वैचारिक स्कीमा परिभाषा भाषा
  • SSDL: स्टोर स्कीमा परिभाषा भाषा
  • एमएसएल: मानचित्रण विनिर्देश भाषा

CSDL संस्थाओं और रिश्तों कि आपके वैचारिक बना होता है आदर्श। एसएसडीएल आपके डीबी मॉडल का वर्णन करता है और एमएसएल 2.

"डीबी से अद्यतन मॉडल" प्रक्रिया एसएसडीएल अपडेट करेगा (वर्तमान डीबी स्कीमा के साथ असंगत सब कुछ बदलें), यह केवल संशोधित करेगा सीएसडीएल अगर आपने अपनी डीबी स्कीमा में नई चीजें जोड़ दी हैं।

यह एक सामान्य व्यवहार है क्योंकि आपकी अवधारणात्मक स्कीमा आपके डीबी स्कीमा से भिन्न हो सकती है (जब तक कि आप अपने डोमेन मॉडल को डीबी मॉडल की तरह दिखाना न चाहें जो स्पष्ट रूप से ओओपी/डीडीडी सर्वोत्तम प्रथाओं के रूप में नहीं लगता है)।

@ पेरू के लिए, समाधान संबंधित इकाई को हटाएगा (पूरे EDMX नहीं!) और फिर "डीबी से अद्यतन मॉडल" प्रक्रिया निष्पादित करें।

आशा है कि इससे मदद मिलती है!

संपादित करें: Huagati DBML/EDMX Tools:

वहाँ एक उपकरण है, नहीं मुक्त करने के लिए है, जो कि CSDL और SSDL फाइलों पर दोनों, आप DB में किए गए परिवर्तनों को लागू की अनुमति देता है एक दृश्य स्टूडियो प्लगइन है। एकमात्र "मुक्त" समाधान इकाई (या इस इकाई के भीतर सही क्षेत्र) को हटा रहा है जिसे अद्यतन करने की आवश्यकता है।

याद रखें कि सीएसडीएल डेवलपर्स द्वारा बनाए रखा जाना चाहिए और डीबी मॉडल की बजाय ऑब्जेक्ट मॉडल की तरह दिखना चाहिए। कल्पना कीजिए कि आपने अपनी संस्थाओं के बीच सेटअप विरासत स्थापित की है या आपने 1 डीबी तालिका को 2 ईडीएमएक्स इकाइयों में विभाजित किया है, "डीबी से अद्यतन मॉडल" चलाना सब कुछ ओवरराइट नहीं करना चाहिए!

+1

इकाई को हटाने का एकमात्र समाधान है? – Peru

+0

एक मौजूदा वीएस प्लगइन है जो नौकरी करता है। मैंने अपना जवाब संपादित कर लिया है। – MaxSC

+0

@ मैक्सएस-बेटक्लिक: क्या आप हमें एक उदाहरण देंगे जब आप कहते हैं कि 'सीएसडीएल को डीबी मॉडल' –

4

व्यक्तिगत रूप से, मैं एडीएमएक्स फ़ाइल को एक्सएमएल के रूप में खोलूंगा और समस्या को नोड ढूंढूंगा और इसे हटा दूंगा। फ़ाइल को समझना बहुत आसान है - इसे कम से कम करने का प्रयास न करें।

0

केवल मैन्युअल संपादन मेरे प्रोजेक्ट में एक दृश्य के लिए काम किया। (छोटे से दशमलव तक (18,2))

टेक्स्ट संपादक में .EDMX फ़ाइल खोलें, एप्राइपिट अनुभाग ढूंढें, और मैन्युअल रूप से प्रॉपर्टी टाइप = "..." मान बदलें।

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