2012-02-27 19 views
8

किसी भी .NET डेटा प्रदाता का उपयोग GAC में इंस्टॉल किए बिना करना संभव है?कस्टम .NET डेटा प्रदाता

क्या मैं एक कस्टम डीएलएल का संदर्भ दे सकता हूं और इसे अपनी कॉन्फ़िगरेशन फ़ाइल के अंदर पंजीकृत कर सकता हूं?

<system.data> 
    <DbProviderFactories> 
     <add name="My Custom Data Provider" 
      invariant="MyCustomDataProvider" 
      description="Data Provider for My Custom Store" 
      type="MyNamespace.MyCustomProviderFactory, MyCustomDataProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=" /> 
    </DbProviderFactories> 
</system.data> 

MyCustomDataProvider विधानसभा GAC में पंजीकृत होने के लिए नहीं है लेकिन तैनात किया जा सकता:

उत्तर

6

हाँ, आप DbProviderFactory वर्ग के एक कार्यान्वयन आपके विन्यास फाइल में following section जोड़कर रजिस्टर कर सकते हैं एक साथ private assembly के रूप में आवेदन के साथ।

invariant विशेषता में उल्लिखित मान का उपयोग करके आप पंजीकृत डेटा प्रदाता को प्रोग्रामेटिक रूप से संदर्भित कर सकते हैं। उदाहरण के लिए आप कनेक्शन स्ट्रिंग में providerName रूप MyCustomProvider निर्दिष्ट द्वारा MyNamespace.MyCustomProviderFactory उपयोग करने के लिए ADO.NET बता सकते हैं:

<connectionStrings> 
    <add name="ConnString" 
     providerName="MyCustomProvider" 
     connectionString="MyCustomConnectionString" /> 
</connectionStrings> 

कोड आप DbProviderFactories.GetFactory विधि के साथ एक ही प्रदाता नाम का उपयोग कर सकते हैं:

DbProviderFactory factory = DbProviderFactories.GetFactory("MyCustomDataProvider"); 

जहां factoryMyNamespace.MyCustomProviderFactory कक्षा का एक उदाहरण होगा।

+0

वही है जो मैं कर रहा हूं। मुझे समझ में नहीं आता कि मैं कहां गलत हो रहा हूं? – Mackolicious

+0

क्या आपने 'टाइप' विशेषता में [पूरी तरह से योग्य असेंबली नाम] (http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx) निर्दिष्ट करने का प्रयास किया है? –

+0

मैं अपनी स्टार्टअप प्रोजेक्ट में डीएलएल को शामिल करना भूल गया। – Mackolicious

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