2013-09-23 9 views
7

एफ # प्रकार प्रदाता की प्रकार परिभाषा को अक्सर निरंतर अभिव्यक्ति की आवश्यकता होती है, उदा। एसक्यूएल प्रकार प्रदाता के लिए:एफ # प्रकार प्रदाता और निरंतर एकीकरण

type dbSchema = SqlDataConnection<"Data Source=MySqlServer;Initial Catalog=MyDatabase;"> 

हालांकि, जब एससीएम के लिए कोड करने से, और आगे अपनी बात कर रहे एक बिल्ड सर्वर होने, तो आप शायद नहीं एक ही कनेक्शन स्ट्रिंग, बल्कि कनेक्शन स्ट्रिंग का उपयोग करना चाहते निर्माण प्रक्रिया से उत्पन्न SQL सर्वर डेटाबेस का।

क्या इस समस्या का समाधान है?

यह काम करने में सक्षम होना वास्तव में अच्छा होगा, क्योंकि यह डेटाबेस एक्सेस कोड की संकलन-समय जांच प्रदान करेगा।

अद्यतन समाधान @tomaspetricek द्वारा प्रस्तावित बहुत अच्छी तरह से काम किया है, लेकिन मैं कनेक्शन स्ट्रिंग के लिए एक प्रदाता नाम जोड़ने के लिए किया था:

<add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=MySqlServer;Initial Catalog=MyDatabase;"/> 
+0

यह तब भी बेहतर होगा यदि उस स्ट्रिंग को कॉन्फ़िगरेशन फ़ाइल से भेजा गया हो। –

+0

@RobertHarvey वास्तव में, यह वही है जो आसानी से किया जा सकता है ;-) –

उत्तर

12

आप निश्चित रूप से एक में एक महत्वपूर्ण का उपयोग कर कनेक्शन स्ट्रिंग निर्दिष्ट कर सकते हैं कॉन्फ़िगरेशन फ़ाइल (MSDN documentation देखें):

SqlDataConnection<ConnectionStringName="...", ConfigFile="app.config"> 

सामान्य तौर पर, एक प्रकार प्रदाता कुछ निरंतर अभिव्यक्ति की आवश्यकता हो सकती है, लेकिन मुझे लगता है कि व्यापक रूप से इस्तेमाल लोगों में से ज्यादातर के लिए एक तरीका प्रदान इसे टालना उदाहरण के लिए, SqlDataConnection विन्यास फाइल से सेटिंग पढ़ सकते हैं, अन्य मानक एफ # प्रकार प्रदाताओं LocalSchemaFile निर्दिष्ट करने की अनुमति देते हैं कि आप आवश्यक संरचना स्थानीय स्तर पर (एसक्यूएल के लिए जैसे *.dbml फ़ाइल) निर्दिष्ट करने के लिए अनुमति देता है।

एफ # डेटा प्रकार प्रदाताओं एक दूरस्थ फ़ाइल का URL ले जा सकते हैं, लेकिन वे भी स्थानीय फाइल ले जा सकते हैं। तो मुझे लगता है कि स्थिर कनेक्शन स्ट्रिंग (आदि) निर्दिष्ट किए बिना जानकारी निर्दिष्ट करने का हमेशा एक तरीका होना चाहिए - लेकिन विशिष्ट प्रदाताओं के बारे में पूछने में संकोच न करें।

+0

मैंने एक उदाहरण के साथ प्रश्न अद्यतन किया है। – spacedoom

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