2012-12-20 11 views
8

मैं एक एफ # पुस्तकालय परियोजना है कि मैं एक सी # वेब परियोजना से उपयोग कर रहा हूँ है। मैं अपने एफ # परियोजना में इकाई की रूपरेखा प्रकार प्रदाता का उपयोग करना चाहते हैं, और यह Web.config से कनेक्शन स्ट्रिंग मिलता है - लेकिन मैं मुसीबत यह काम कर रही हूँ।मैं इकाई फ्रेमवर्क प्रकार प्रदाता कैसे रनटाइम कॉन्फ़िगरेशन फ़ाइल का उपयोग कर सकता हूं?

type internal FooDb = 
    SqlEntityConnection<ConnectionStringName="FooDb", Pluralize=true> 

डिजाइन समय में, मैं एक कनेक्शन मेल खाने वाले नाम होने तार के साथ एफ # पुस्तकालय परियोजना में एक App.config फ़ाइल के लिए आवश्यक कर रहा हूँ।

रनटाइम पर, जब सी # वेब परियोजना से मेरी एफ # कोड बुला, मैं एक त्रुटि है कि यह "App.config" फ़ाइल का पता नहीं कर सकते हैं। यह मैं आश्चर्य है, क्योंकि मैं उम्मीद कर रहा था जो रनटाइम के दौरान यह सिर्फ ConfigurationManager.ConnectionStrings का उपयोग वर्तमान में सक्रिय कॉन्फ़िग फ़ाइल से कनेक्शन स्ट्रिंग लोड करने के लिए होता है (किसी वेब एप्लिकेशन, Web.config के मामले में)। हालांकि यह मामला प्रतीत नहीं होता है।

मैं ConfigFile पैरामीटर जोड़ने की कोशिश की:

type internal FooDb = 
    SqlEntityConnection<ConnectionStringName="FooDb", ConfigFile="Web.config", Pluralize=true> 

लेकिन इस बस इसे डिजाइन समय में शिकायत करते हैं कि यह Web.config नहीं पा सके बना दिया।

तब मैं Web.config को एफ # पुस्तकालय परियोजना में App.config फ़ाइल का नाम बदला और है कि चीजें काम कर मिल गया है लगता है। हालांकि, मैं इस समाधान के बारे में असहज हूँ। क्या यह वास्तव में काम करने का इरादा है? मुझे अपनी लाइब्रेरी प्रोजेक्ट में web.config फ़ाइल रखना है? मैं अगर मैं एक कमांड लाइन निष्पादन से ही पुस्तकालय उपयोग करना चाहता था, और कहा कि वातावरण में कॉन्फ़िग फ़ाइल AssemblyName.exe.config कहा जाता है क्या करना होगा?

मुझे एक कॉन्फ़िगरेशन फ़ाइल का नाम हार्ड कोड कोड करने के लिए मजबूर करना जिसमें विभिन्न संदर्भों में अलग-अलग नाम हो सकते हैं, बहुत ही भंगुर और एक खराब डिज़ाइन लगता है। कृपया मुझे बताओ मुझे कुछ याद आ रही है।

उत्तर

3

आपके द्वारा सामना किया गया मुद्दा वास्तव में दुर्भाग्यपूर्ण लगता है, और मुझे नहीं पता कि आप कुछ याद कर रहे हैं या नहीं। हालांकि, SqlEntityConnection documentation कहता है कि FooDb में GetDataContext अधिभार होना चाहिए, जहां "कनेक्शन स्ट्रिंग पैरामीटर को कनेक्शनटाइम पर निर्धारित किया जा सकता है जब" कनेक्शन स्ट्रिंग को रनटाइम पर निर्धारित किया जाता है। " शायद यह है कि आप एक सभ्य पर्याप्त काम के आसपास दे देंगे (अर्थात ConfigurationManager.ConnectionStrings से कनेक्शन स्ट्रिंग में पारित अपने आप को)।

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

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