11

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

मैं क्या करना चाहते हैं क्या एक साधारण नाम नियम लिखने के लिए (यह पिछले अंडरस्कोर खोजने के रूप में सरल है और उसके बाद सब कुछ लेने के लिए) और इकाई की रूपरेखा में लागू है। मैं वास्तव में संपादक में एक-एक करके नाम संपादित नहीं करना चाहता, खासकर क्योंकि डेटाबेस बदल सकता है और मैं इसे कई बार नहीं करना चाहता हूं।

मैं डाटाबेस फर्स्ट का उपयोग कर रहा हूं (क्योंकि डेटाबेस पहले से मौजूद है और यह "मास्टर" है), और ईएफ 4.x डीबीकॉन्टेक्स्ट जेनरेटर और यह वास्तव में बॉक्स से बाहर काम करता है (बुरी तरह से नामित वर्गों और गुणों के साथ) ।

मैंने उत्पन्न इकाइयों और गुणों का नाम बदलने के लिए टी 4 टेम्पलेट्स संपादित किए, लेकिन जब मैं कोई अनुरोध करने का प्रयास करता हूं, तो DbContext ऑब्जेक्ट उस तालिका को नहीं ढूंढ सकता जो उस इकाई के साथ मेल खाता है जिसे मैं अनुरोध करने का प्रयास कर रहा हूं और मैं इस अपवाद प्राप्त करें:

इकाई प्रकार [इकाई नाम] वर्तमान संदर्भ के लिए मॉडल का हिस्सा नहीं है।

यही कारण है कि तालिका नहीं मिल रहा है स्पष्ट है: कुछ भी नहीं है यह बताता है कि कैसे के रूप में मैं यह मक्खी पर परिवर्तित इकाई नाम और तालिका से मिलान के। मैंने पढ़ा है कि मैं OnModelCreating(DbModelBuilder modelBuilder) विधि निर्देश जोड़ सकते हैं, लेकिन यह डाटाबेस पहले में नहीं किया जाता है (और डिफ़ॉल्ट टी -4 टेम्पलेट उस में एक अपवाद कहते हैं, सिर्फ मामले में)।

तो अब मैं अटक कर रहा हूँ, मुझे लगता है कि मिलान निर्दिष्ट करने के लिए कैसे पता नहीं है।

यहाँ कई विचारों मेरे पास है, लेकिन नहीं यकीन है कि अगर यह सही है या संभव है कर रहे हैं:

  • "बहुवचन/विलक्षण" API का उपयोग करना इकाई का नाम बदलने के लिए? एक गंदा कामकाज की तरह लगता है। लेकिन यह काम कर सकता है (हालांकि कोशिश नहीं की)।
  • फ्लाई पर EDMX फ़ाइल को संपादित करने का कोई तरीका ढूंढना।
  • edmx बाद में संपादित करना, लेकिन यह डिजाइनर में प्रक्रिया को जटिल बना सकता है (संपादित करें, तो edmx को बदलने के लिए एक उपकरण पर अमल करें, तो संस्थाओं और DbContext पुनर्जीवित करने के लिए कस्टम उपकरण चलाएँ ... जबकि आज मैं सिर्फ डिजाइनर में संपादित करने के लिए है)।
  • कोड फर्स्ट का उपयोग करना (जैसा कि तालिका नामों से भिन्न इकाई नामों का उपयोग करना आसान लगता है, डीबीकॉन्टेक्स्ट क्लास में विशेषताओं या निर्देशों के माध्यम से), लेकिन ऐसा लगता है कि मौजूदा डेटाबेस के साथ इसका उपयोग करना अधिक जटिल नहीं होगा।

किसी भी विचार? या किसी को याद किया था ?

उत्तर

7

आप इसके लिए एक टी 4 ट्रांसफॉर्म का उपयोग करने में सक्षम नहीं होंगे, क्योंकि आप अपने sanitized वैचारिक इकाई नामों पर अपने स्टोर इकाई नामों (अप्रिय उपसर्गों के साथ) को मैप करने के लिए वास्तविक .edmx फ़ाइल की सामग्री को बदलना चाहते हैं।

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

+2

मुझे वह जवाब प्राप्त करने से डर था :)। मैं उम्मीद कर रहा था कि मुझे कुछ याद आया। ऐसा लगता है कि किसी ने पहले से ही यह टूल किया है: http://blog.cincura.net/228749-making-names-of-entities-or-any-identifiers-in-entity-framework-model-code-and-developer-friendly -not-अपर केस / –

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