2011-02-08 11 views
16

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

मैंने इसे एक नई कक्षा पुस्तकालय परियोजना में स्थानांतरित कर दिया और परियोजना द्वारा उत्पन्न नए डीएलएल का उपयोग करने के लिए वेब प्रोजेक्ट में इकाइयों के सभी संदर्भों को अपडेट किया। एक छोटी सी झटके को छोड़कर, सब कुछ सुचारू रूप से चला गया है। जब मैंने नई परियोजना में ईएफ को स्थानांतरित किया, तो किसी भी तरह से यह वेब प्रोजेक्ट में web.config से इसकी कनेक्शन स्ट्रिंग पढ़ रहा था (मुझसे मत पूछें कि मेरे पास कोई सुराग नहीं है)।

मैंने ईएफ डिजाइनर में "डेटाबेस से अद्यतन मॉडल" का उपयोग किया और इसे कनेक्शन स्ट्रिंग नहीं मिली (जैसा कि मुझे इसे नई परियोजना में ले जाने के बाद अपेक्षित था) इसलिए मैंने एक नई कनेक्शन स्ट्रिंग उत्पन्न करने के लिए विज़ार्ड का उपयोग किया, यह ठीक है। नया कनेक्शन स्ट्रिंग अब क्लास लाइब्रेरी प्रोजेक्ट के भीतर App.config में रहता है। गुण विंडो में कनेक्शन स्ट्रिंग अभी सही है, और डिज़ाइनर इसे App.Config से पढ़ रहा है। मैं आगे बढ़ गया और वेब से कनेक्शन स्ट्रिंग हटा दी। वेब प्रोजेक्ट में कॉनफिग।

अब जब आवेदन मैं निम्नलिखित त्रुटि मिलती चल: यदि मैं कनेक्शन स्ट्रिंग Web.Config में वापस पेस्ट

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

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

उत्तर

20

यह डिज़ाइन द्वारा है; जबकि क्लास लाइब्रेरी में कॉन्फ़िगरेशन फ़ाइल डिज़ाइनर का उपयोग करेगी, वास्तविक एप्लिकेशन की कॉन्फ़िगरेशन फ़ाइल रनटाइम पर उपयोग की जाएगी। चाहे वह Winforms या WPF प्रोजेक्ट के लिए ASP.NET प्रोजेक्ट या App.config के लिए Web.config है, यह एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल (या मशीन.कॉन्फिग की तरह कुछ ऊपर है) का उपयोग किया जाएगा; कक्षा पुस्तकालय में फ़ाइल आवेदन का हिस्सा नहीं है।

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

मेरा समाधान आमतौर पर संदर्भ पर स्थिर पैरामीटर रहित फ़ंक्शन प्रदान करने के लिए होता है जो उचित कनेक्शन स्ट्रिंग के साथ इस अधिभार को कॉल करता है।

+3

प्रतीक्षा करें, तो इसका मतलब है कि कक्षा पुस्तकालय में app.config फ़ाइल व्यर्थ है? संकलित लाइब्रेरी के अपने संसाधनों तक पहुंच नहीं होनी चाहिए? यह अन्य परियोजना में web.config के बारे में भी कैसे पता है? – Chev

+2

@ चेवेक्स: रनटाइम पर, हाँ, यह व्यर्थ है। कॉन्फ़िगरेशन फ़ाइल संसाधन नहीं है, यह केवल एक कॉन्फ़िगरेशन फ़ाइल है जो प्रोजेक्ट का हिस्सा है। परियोजना का निर्माण करना कुछ भी नहीं करता है। यह Web.config के बारे में पता है क्योंकि यह .NET के कॉन्फ़िगरेशन मैनेजर का उपयोग करता है, और जो एप्लिकेशन लॉन्च करता है (आपके मामले में एक वेब ऐप) इसे वहां निर्देशित करता है। –

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