2010-01-19 11 views
20

पर सदस्यों की संख्या से मेल नहीं खाती है। मैं .NET Framework 3.5 SP1 का उपयोग कर रहा हूं।वैचारिक प्रकार में सदस्यों की संख्या ऑब्जेक्ट साइड प्रकार

The number of members in the conceptual type 'XBRLDimensionalModel.axis_t' does not match with the number of members on the object side type 'EOL.Xbrl.Persistence.Data.axis_t'. Make sure the number of members are the same.

मैं:

Sql सर्वर में एक तालिका में एक कॉलम जोड़ने (और साथ ही नल नहीं करने के लिए nulls अनुमति देने से मौजूदा स्तंभ को बदलने), मैं अब यह त्रुटि मिल रही बिना अपने प्रोजेक्ट चला सकते हैं के बाद उत्पन्न कोड खोजने और ठीक करने की कोशिश छोड़ दिया। अब मैंने अपनी सभी स्थानीय इकाई-संबंधित फ़ाइलों को हटा दिया है और स्क्रैच से शुरू करके और एक नया आइटम (ADO.NET इकाई डेटा मॉडल) जोड़कर उन्हें फिर से उत्पन्न किया है। मुझे अभी भी यह त्रुटि मिलती है।

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

मैंने अभी तक पढ़ा है ऐसा लगता है कि मुझे बस डेटाबेस से अपने मॉडल को "अपडेट" करने में सक्षम होना चाहिए था। इसके परिणामस्वरूप यह अपवाद (उपरोक्त) है। लेकिन अब मैं पूरी तरह उलझन में हूं कि यहां तक ​​कि इकाई मॉडल और सहायक कक्षाओं के पूर्ण पुनरुत्थान के साथ भी मुझे यह त्रुटि मिल रही है।

मैंने अपने एडीएमएक्स मॉडल पर संपत्ति बदल दी: "मेटाडेटा आर्टिफैक्ट प्रोसेसिंग" से "आउटपुट निर्देशिका में कॉपी करें"। Designer.cs, csdl, msl, ssdl फ़ाइलें सभी नवीनतम डीबी परिवर्तनों के अनुरूप हैं।

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

कोई विचार जहां मैं गलत हो रहा हूं? धन्यवाद, टीजी

उत्तर

6

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

+0

क्रेग, खेद, तो आप सिर्फ CSDL फ़ाइल या edmx फ़ाइल या दोनों क्या मतलब है? और एक और बेवकूफ सवाल: "मॉडल अपडेट करें" करने के लिए मैं बस जीयूआई की पृष्ठभूमि पर राइट-क्लिक करता हूं। डेटाबेस से मॉडल अद्यतन करें (टैब ताज़ा करें) समाप्त करें। ? –

+0

और दूसरा: जब आप "टाइप" कहते हैं तो क्या आपका मतलब है कि मेरी तालिका (एक्सिस_टी) से संबंधित इकाई? –

+0

सीएसडीएल ईडीएमएक्स से उत्पन्न होता है। आप ईडीएमएक्स के सीएसडीएल * सेक्शन * को संपादित करना चाहते हैं। हाँ, आप राइट-क्लिक करें। हाँ, मेरा मतलब है। –

1

यह लगता है एक टिप्पणी तो मैं एक और जवाब के रूप में इस जोड़ रहा के लिए एक छोटे से वर्बोज़:

प्रतिक्रिया क्रेग के सुझाव मैं एक एक्सएमएल दर्शक में edmx फ़ाइल खोला और Axis_t के सभी संदर्भ हटा दिया में (कारण संघों सहित विदेशी कुंजी के लिए)। पूरी फाइल से।

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

तब मैंने परियोजना को उसी परिणाम में चलाया। ऊपर पोस्ट के रूप में वही त्रुटि।

अब मैं स्रोत नियंत्रण में क्या था और डेटाबेस कॉलम (नया एक और संशोधित एक) को बदलने के रूप में वापस लौटा दिया है। परियोजना ठीक चलती है। मैं अभी भी ईएफ में नए डीबी कॉलम को लागू करने में सक्षम नहीं हुआ हूं। ऐसा लगता है कि मॉडल के कुछ संग्रहीत/संकलित संस्करण हैं जिन्हें "अद्यतन" प्रक्रिया के माध्यम से अपडेट नहीं किया जा रहा है।

+0

"डेटाबेस से अद्यतन" ईडीएमएक्स के एसएसडीएल अनुभाग को पूरी तरह से बदल देगा। यह सीएसडीएल को भी अपडेट करेगा जब ऐसा लगता है कि यह आपके द्वारा किए गए परिवर्तनों को मिटाए बिना ऐसा कर सकता है। उदाहरण के लिए, यदि आपके पास पूरी तरह से नया कॉलम था, तो इसे CSDL में जोड़ना चाहिए। दूसरी तरफ, यदि आप कॉलम के प्रकार को बदलते हैं, तो यह सीएसडीएल अपडेट नहीं हो सकता है। यदि मेरा मूल सुझाव आपके लिए काम नहीं कर रहा है, तो संभवतः एमएसएल या सीएसडीएल का कुछ हिस्सा उस इकाई से संबंधित है जिसे आपने याद किया है। –

+0

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

1

जब एक विदेशी कुंजी को शून्य से गैर-शून्य (या इसके विपरीत) में बदलते हैं, तो एसोसिएशन गुणांक को 0..1 से 1 (या इसके विपरीत) में बदलना सुनिश्चित करें। डिजाइनर कभी-कभी डेटाबेस से अद्यतन में इसे याद करता है।

32

यह त्रुटि तब भी हो सकती है जब Visual Studio के बाहर EDMX फ़ाइल बदल दी गई हो।राइट edmx फ़ाइल पर क्लिक करें और क्लिक करें "भागो कस्टम उपकरण"

+2

यह स्वीकार्य उत्तर होना चाहिए। –

0

यह मेरे लिए हुआ है जब मैं कि एक ही फ़ोल्डरों में संकलन एक ही आवेदन (मॉडल अंतर के साथ) के दो संस्करणों पर काम कर रहा हूँ।

ऐसा लगता है कि दृश्य स्टूडियो ठीक से "obj" अस्थायी फ़ोल्डर "साफ" नहीं है और पुराने मॉडल के कुछ टुकड़े वहाँ में अब भी कर रहे हैं।

मैं बस "obj" फ़ोल्डर से सभी फाइलों को हटा सकते हैं और यदि फिर से संकलन इस त्रुटि दूर चला जाता है।

प्रत्येक संस्करण में मॉडल सही है जो मुझे पागल कर रहा था।

यह नहीं कह रहा कि यह ओपी के प्रश्न का उत्तर है, लेकिन यह निश्चित रूप से इस त्रुटि के लिए कारण है।

स्टीव

0

मैं घंटों के लिए यह एक ही मुद्दा था। पाया कि मेरे Designer.cs फ़ाइल में मेरी इकाई के गुणों में से एक में इसके गुण गायब थे। (यह नहीं पता कि यह कैसे हुआ?)

[EdmScalarPropertyAttribute(EntityKeyProperty = false, IsNullable = false)] 
[DataMemberAttribute()] 
public global::System.Int32 ContractCapacity 

अब त्रुटि संदेश समझ में आता है, यह गायब डेटामेम्बर था। एक बार विशेषता जोड़ने के बाद यह काम किया !!!

0
  • सही एक्सएमएल के साथ अपने edmx फ़ाइल और खुले पर क्लिक करें।
  • गलत डेटा प्रकार खोजें और उन्हें बदलें।
  • फ़ाइल सहेजें।

यह मेरे लिए काम किया। मैं एक MVC2 वेबसाइट और एक WCF सेवा है कि अलग से निर्माण कर रहे हैं है, लेकिन एक विन्यास का हिस्सा:

0

यहाँ एक बुरा सपना परिदृश्य है कि मैं सिर्फ अनुभव किया है। दोनों परियोजनाओं के भीतर, मैंने एक ही इकाई कंटेनर नाम का उपयोग किया; इसलिए मैंने दोनों परियोजनाओं के लिए एक ही कनेक्शन स्ट्रिंग उठाई। अंत में मेटाडेटा दोनों के बीच सिंक से बाहर हो गया और इस त्रुटि का कारण बन गया। स्पष्ट समाधान दो परियोजनाओं में एक ही इकाई कंटेनर नाम का उपयोग नहीं करना था; एक अलग नाम में बदलने से मुझे समस्या से परहेज करने वाले प्रत्येक घटक के लिए अद्वितीय कनेक्शन स्ट्रिंग, और इसलिए मेटाडेटा निर्दिष्ट करने की अनुमति दी गई।

अब जब मैंने इसे समझ लिया, तो यह स्पष्ट है, लेकिन मेरे पास एक घंटे या दो घंटे का समय था!

1
मैं एक ही मुद्दा है, का सामना करना पड़ रहा था जब मैं db से एक स्तंभ जोड़ा गया है और इकाई (edmx) करने के लिए संबंधित संपत्ति जोड़ा

। मैं अपने समाधान के लिए स्रोत नियंत्रण का भी उपयोग कर रहा था। जैसा कि मैंने देखा, किसी भी फ़ाइल में परिवर्तनों को सहेजते समय, ओवरराइट विकल्प के साथ कार्रवाई संकेतों को बचाएं। तो, मैंने design.cs के साथ-साथ कॉन्फ़िगरेशन फ़ाइल को ओवरराइट किया और समस्या हल हो गई।

संबंध है, भूषण

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