2009-06-08 8 views
7

के बीच स्विच करने का सबसे अच्छा तरीका LINQ से SQL ORM का उपयोग करके परीक्षण और देव डेटाबेस के बीच प्रोग्रामेटिक रूप से टॉगल करने का सबसे आसान तरीका क्या है?LINQ से SQL - परीक्षण और देव डीबी

+0

स्पष्ट होने के लिए - आप इसे रनटाइम पर करना चाहते हैं? –

+0

आदर्श रूप से, हाँ, रनटाइम पर। – alchemical

उत्तर

8

डेटाकॉन्टेक्स्ट को नया करते समय, ओवरलोड में से एक कनेक्शन स्ट्रिंग लेता है। इसलिए मेरे पास एक कंपाइलर स्विच कुछ होगा:

#if Debug 
string connectionString = .... 
#else 
string connectionString = ... 
#endif 

DbDataContext db = new DbDataContext(connectionString); 
+0

मैं इस टिप्पणी से सहमत हूं, हालांकि मैं कनेक्शन स्ट्रिंग को पूरी तरह से कोड से बाहर कर दूंगा और या तो आपके ऐप/web.config या किसी अन्य केंद्रीकृत कॉन्फ़िगरेशन स्रोत में स्थानांतरित करूंगा। – Serapth

+0

आप अभी भी कर सकते हैं। आपके कॉन्फ़िगरेशन फ़ाइल में आपके पास दो भाग हो सकते हैं और जब आप कोड में कनेक्शन स्ट्रिंग असाइन करते हैं, तो आप सही एक आधार लेते हैं कि आप डीबग में हैं या नहीं। – BFree

2
using (MyDataContext dc = new MyDataContext(connectionString)) 
{ 
    //do a unit of work. 
} 
7

वेब/ऐप कॉन्फ़िगरेशन में कनेक्शन स्ट्रिंग का उपयोग करना। देव/परीक्षण/प्रोड के लिए कई विन्यास हैं। प्रत्येक के पास उचित कनेक्शन स्ट्रिंग होना चाहिए। प्रत्येक पर्यावरण के लिए कॉन्फ़िगरेशन स्विच करें।

+0

मुझे इस दृष्टिकोण को कभी पसंद नहीं आया है, ऐसा लगता है जैसे यह त्रुटि के लिए बहुत सारे कमरे छोड़ देता है। –

+0

मैंने डिफ़ॉल्ट रूप से DEV के साथ अपना सेट अप किया है। यह मेरी स्थानीय मशीन पर होता है जो परीक्षण या प्रोड से अनुपलब्ध है। यदि ऐप का प्रकाशन कॉन्फ़िगरेशन को स्विच नहीं करता है तो ऐप जोर से और जल्दी विफल हो जाता है। – tvanfosson

+0

+1 यह सही उत्तर है। आपको यह उल्लेख करना चाहिए कि आप web.config खंडों को प्रतिस्थापित करने के लिए msbuild का उपयोग कर सकते हैं, यानी आपको डीबग बिल्ड पर अपना DEV conn स्ट्रिंग मिलती है, लेकिन रिलीज पर आपकी प्रोड स्ट्रिंग –