2009-05-13 9 views
7

मैं एंटीटी फ्रेमवर्क के साथ एक स्तरित आर्किटेक्चर का उपयोग कर रहा हूं क्योंकि मेरे डायटाएयर के रूप में शीर्ष पर भंडारों का एक गुच्छा है जिसमें लिंक-टू-एंटिटीज प्रश्न हैं। डेटा लेयर एक प्रोजेक्ट है, उसके बगल में मेरे पास एक सेवा परत और इंटरफ़ेस है, जो एक वेबसाइट है।इकाई फ्रेमवर्क - स्तरित डिज़ाइन - कनेक्शनस्ट्रिंग कहां रखना है?

मैं चाहता हूं कि मेरी वेबसाइट मेरे इकाई मॉडल के लिए कनेक्शनस्ट्रिंग निर्दिष्ट करने के लिए जिम्मेदार हो। मैं यह कैसे करु?

मैं अपने इकाई भंडार में जाने के लिए एक सिंगलटन विधि का उपयोग कर रहा हूं, जो डाटाटायर के अंदर स्थित है।

धन्यवाद

उत्तर

9

आप ऐप में बनाए गए कनेक्शन स्ट्रिंग की प्रतिलिपि बना सकते हैं। DAL असेंबली के कनेक्शन में web.config के कनेक्शन अनुभाग में।

आप असेंबली डीएलएल में कनेक्शन स्ट्रिंग रख सकते हैं लेकिन आपको इसे वेबसाइट के साथ तैनात नहीं करना चाहिए।

आपको संपूर्ण कनेक्शन स्ट्रिंग की प्रतिलिपि बनाना होगा। यह इस तरह दिखना चाहिए:

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

इसमें मैपिंग फाइलें मौजूद हैं, इस बारे में सारी जानकारी शामिल होनी चाहिए।

+0

मैंने अपने इकाई मॉडल को फिर से बनाया और फिर कोशिश की और अब यह काम करता है, धन्यवाद !!! – Peter

3

मेरे मामले में, हालांकि मैं L2S उपयोग कर रहा हूँ L2E के बजाय, लेकिन सिफारिश खड़े होना चाहिए। मेरे पास एक सामान्यीकृत कॉन्फ़िगर लाइब्रेरी है जो एक XML फ़ाइल से फ़ीड करती है। जब डेटा संदर्भ की आवश्यकता होती है, तो प्रत्येक डेटा ऑब्जेक्ट में निम्न की तरह एक विधि होती है। अनुमोदित, यदि आप चाहें तो इसे आसानी से टेम्पलेट किया जा सकता है।

private static string _conStr = null; 
private static CalendarsAndListsDataContext GetDataContext() 
{ 
    if (_conStr == null) 
    { 
     _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString"); 
    } 

    return new CalendarsAndListsDataContext(_conStr); 
} 

अब, सबसे बड़ी नकारात्मक पक्ष यह कनेक्शन स्ट्रिंग परिवर्तन एक आवेदन को पुनः आरंभ करने की आवश्यकता होती है, लेकिन मेरे मामले में, कि कोई मुद्दा नहीं है।

+0

मुझे यह विचार पसंद है कि आप एक अतिरिक्त प्रोजेक्ट में अपनी कॉन्फ़िगरेशन को कैसे अलग करते हैं। लेकिन इस एप्लिकेशन के लिए मैं चाहता हूं कि मेरी वेबसाइट कनेक्शनस्ट्रिंग का प्रभारी हो। – Peter

+0

ठीक है, आपके कॉफ़िग्रिशन लेयर को केवल पढ़ने के लिए कोई कारण नहीं है। आप इसे पढ़/लिख सकते हैं, तो आप COnfigurationLibrary.Config.AddSetting ("कनेक्शनस्ट्रिंग", "MyString") जैसे कुछ कर सकते हैं। फिर आपकी वेबसाइट अभी भी कनेक्शन स्ट्रिंग ड्राइव कर सकती है। – Serapth

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