2009-01-12 14 views
8

के लिए रनटाइम पर एक्सएसडी कनेक्शनस्ट्रिंग बदलना मैं अपने आवेदन को "कोड & एक डेटाबेस" के एक सेट से बदल रहा हूं "एकाधिक डेटाबेस में कोड का एक सेट (प्रति ग्राहक एक डेटाबेस)"।एक बहुआयामी ऐप

मूल कोड VS2005 ASP.NET (VB) & एक अलग DLL में XSD के बहुत सारे हैं। Web.config का कनेक्शन स्ट्रिंग रनटाइम पर डीएलएल में संग्रहीत एक को ओवरराइड करेगा।

अब जब भी मैं डेटा एडाप्टर/डेटासेट/टेबल घोषित करता हूं, तो मुझे कनेक्शन स्ट्रिंग को बदलने की आवश्यकता होती है, क्योंकि कॉल अंतिम कॉल से अलग डेटाबेस पर जा सकता है।

क्या किसी को इस पर कोई संकेत मिला है?

उत्तर

6

कुछ शोध के बाद, ऐसा लगता है कि एक एक्सएसडी में कनेक्शन मोडिफायर नामक एक संपत्ति है।

इसे खोजने के लिए, अपने एक्सएसडी आरेख पर, आरेख के तालिका एडाप्टर भाग पर क्लिक करें (जहां प्रश्न परिभाषित किए गए हैं)।

गुण विंडो में, कनेक्शन मोडिफायर को सार्वजनिक में बदलें और सहेजें पर क्लिक करें। (यह है कि पृष्ठ पर सभी डेटासेट के लिए भी संपत्ति को बदलने के लिए लगता है।)

अपनी साइट के मुख्य कोड में वापस तुम अब कुछ इस तरह कर सकते हैं:

'declare the adapter as normal 
Dim AdapterTest As New DataSetTestTableAdapters.TestTableAdapter 

'pass the new connection object into the now visible property 
AdapterTest.Connection = New Data.SqlClient.SqlConnection("Data Source=Myserver;Initial Catalog=TEST;Integrated Security=True;") 

यह केवल एक कनेक्शन वस्तु लेता है ।

मैंने अभी तक यह उचित परीक्षण नहीं दिया है! दुर्भाग्यवश, जब भी आप एक्सएसडी से कुछ घोषित करते हैं, तो एक नया कनेक्शन ऑब्जेक्ट पास होना होगा।

1

भी पाया है कि हालांकि संपत्ति का उल्लेख किया (ConnectionModifier) ​​सार्वजनिक है, यह अभी भी नहीं कोड के माध्यम से देखा जा सकता है जब यह एक QueriesTableAdapter है। इसलिए मुझे इन्हें हटाने और उन्हें सामान्य "क्वेरी का उपयोग" ब्लॉक के साथ बदलने में काफी समय व्यतीत करना पड़ा।

साथ ही, मुझे यकीन है कि परियोजना अब तेज़ी से प्रतीत होती है। यह आकार में कमी या अब सभी कॉल्स के साथ "का उपयोग" का उपयोग हो सकता है (मूल कोड हमारे नेट दिनों में जल्दी तो बेहतर पहली जगह में लिख सकता था किया गया)।

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