2012-12-02 7 views
12

मेरे पास मेरे एमएस एसक्यूएल डेटाबेस में 3 टेबल हैं और मैंने अपनी परियोजना में एक एंटीटीफ्रेमवर्क (नवीनतम) जोड़ा है जहां मैंने इन 3 टेबल आयात किए हैं। पहली समस्या यह थी कि कोई भी संस्था नहीं बनाई गई थी इसलिए मैंने None से Default से "कोड वंशावली रणनीति" बदल दी।एक्स पहले से ही एंटिटीफ्रेमवर्क के साथ एक परिभाषा वाई है? (सरल डेटाबेस)

निर्माण के बाद मैं

एक्स पहले से ही संस्थाओं के सभी गुण पर वाई

के लिए एक परिभाषा शामिल मिलता है।

जब करीब देख रहे हैं तो MainModel.Designer.cs में आंशिक पूर्व Users.cs और एक आंशिक User उत्पन्न हुआ है?

यह User.cs क्यों उत्पन्न कर रहा है? मेरे पास एक और प्रोजेक्ट में एक समान सेटअप है और ईएफ एक ही सेटिंग के साथ सेट है, User.cs नहीं है?

Edit1: मैं एक बात यह है कि अलग है और thats मजबूत स्थानिक प्रकार है कि नाकाम रहने परियोजना में गलत पर सेट है का उपयोग देख सकते हैं, यह फिर भी संभव नहीं यह निर्धारित करने के लिए करने के लिए सच (धूसर हो) क्या है?

उत्तर

20

आपको या तो अपनी .edmx फ़ाइल के लिए None कोड जनरेशन रणनीति का उपयोग करना चाहिए। या MainModel.tt और MainModel.Context.tt टेम्पलेट्स को हटाएं, जो मॉडल इकाइयों और संदर्भ उत्पन्न करते हैं।

यदि आप Default कोड जनरेशन रणनीति का उपयोग करते हैं, तो संस्थाएं और संदर्भ MainModel.Designer.cs फ़ाइल में उत्पन्न किए जाएंगे। यह EntityObject से विरासत में प्राप्त मानक संस्थाएं होगी, संदर्भ ObjectContext का विरासत प्राप्त होगा। एंटिटी फ्रेमवर्क 5 के साथ हमारे पास पीओसीओ इकाइयों की पीढ़ी है। और पूरी पीढ़ी टी 4 टेम्पलेट्स में की जाती है, जो संदर्भ उत्पन्न करती है, DbContext से विरासत में मिली है, और कुछ मूल प्रकार के बिना पीओसीओ इकाइयां (अच्छी तरह से, ऑब्जेक्ट केवल)।

जब आपके पास एडीएमएक्स डिजाइनर में टेम्पलेट्स और सक्षम कोड पीढ़ी दोनों होते हैं, तो इकाइयों के दो सेट उत्पन्न किए जाएंगे। यही कारण है कि आपके नाम विवाद हैं।

+0

धन्यवाद! यदि मैं कोड पीढ़ी को किसी को भी स्विच नहीं करता हूं तो मुझे लगता है कि टाइप जेनरेट किया जाएगा जैसा कि आप कहते हैं लेकिन इसे डेटाबेस में टेबल की तरह ही उपयोगकर्ता नाम दिया जाएगा। मुझे समाधान में एक इकाई के रूप में उपयोगकर्ता कहा जाना चाहिए। क्या पीओसीओ पीढ़ी के साथ बदलना संभव है? मैंने ईएफ में टेबल का नाम बदलने की कोशिश की है लेकिन यह काम नहीं करता है? अक्सर यह है कि मैं ईएफ में सभी इकाइयों को हटा देता हूं और उन्हें फिर से जोड़ता हूं, इसलिए समाधान अच्छा होगा अगर समाधान उसके साथ काम करता है। – Ivy

+0

हां, यह बहुत आसान है। एडीएमएक्स डिजाइनर खोलें, 'उपयोगकर्ता' इकाई का चयन करें, और इसे 'उपयोगकर्ता'' (ईटिटी शीर्षक पर डबल क्लिक करें) का नाम दें। फिर edmx फ़ाइल को सहेजें - 'MainModel.Context.tt' इकाई वर्गों को पुन: उत्पन्न करेगा (आपको 'users.cs' के बजाय' User.cs' फ़ाइल दिखाई देगी)। –

+0

क्षमा करें, लेकिन यह काम नहीं करता है, यह केवल उपयोगकर्ता को पहचानता है जब भी इकाई शीर्षक उपयोगकर्ता पर सेट होता है। – Ivy

3
  1. दायां इकाई मॉडल पर राइट क्लिक करें।
  2. गुणों पर जाएं और "कस्टम टूल" में डिफ़ॉल्ट नाम हटाएं।
  3. model.tt और model.context में edmx असाइन करें
  4. इसे बनाएं और निष्पादित करें आप त्रुटि से मुक्त होंगे।
+0

बहुत बहुत धन्यवाद। कई संघर्ष के बाद यह मेरी समस्या को हल करता है। – Dilip0165

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