2013-07-08 10 views
5

मुझे अपने एएसपी.नेट एमवीसी एप्लिकेशन में एकाधिक कनेक्शन स्ट्रिंग का उपयोग करने की आवश्यकता है। मैं इसे कैसे कर सकता हूं? अब मैं निम्नलिखित के रूप में कनेक्शन दर्ज की है:एएसपी.नेट एमवीसी। ऑटोफैक और एकाधिक कनेक्शन स्ट्रिंग्स

builder.RegisterType<SqlConnection>().WithParameter(
    "connectionString", 
    WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString) 
    .InstancePerLifetimeScope() 
    .ExternallyOwned(); 

builder.Register(c => new ContextDataContext(c.Resolve<SqlConnection>())).InstancePerDependency(); 

उत्तर

3

आप नाम से एक दिया प्रकार के कई उदाहरण रजिस्टर कर सकते हैं:

Autofac ट्यूटोरियल से:

builder.Register<OnlineState>().Named<IDeviceState>("online"); 

एक नामित सेवा को पुन: प्राप्त करने के लिए, ResolveNamed() विधि है प्रयुक्त:

var r = container.ResolveNamed<IDeviceState>("online"); 

http://autofac.readthedocs.org/en/latest/advanced/keyed-services.html

+0

धन्यवाद। आपने मुझे प्रवेश बिंदु दिया, और मैं कुंजी विधि का उपयोग करने का फैसला करता हूं। – alexmac

0

एक तरह से यह करने के लिए, अपने खुद के कनेक्शन कारखाना बनाने के लिए, और autofac के साथ रजिस्टर करने के लिए है। कुछ की तरह:

interface IConnectionFactory{ 
    SqlConnection CreateConnection(string connectionStringName); 
} 
+0

यह एकाधिक कनेक्शन तारों का उपयोग करने में मदद करने के लिए कैसे माना जाता है? कारखाने का उपयोग करना समझ में आता है जब इसके उपयोग से पहले घटकों के कस्टम प्रारंभिकरण की आवश्यकता होती है। यह मूल प्रश्न के लिए उत्तर नहीं है भले ही यह सहायक हो। (या मुझे नहीं लगता कि आप इसका उपयोग कैसे करने की योजना बना रहे हैं) – kubal5003

+0

@ kubal5003, उसका कारखाना इसके नाम के आधार पर निर्दिष्ट कनेक्शन स्ट्रिंग के साथ एक कनेक्शन बनाएगा, इसलिए उसका कोड आवश्यक कनेक्शन प्राप्त करने के लिए इस फैक्ट्री विधि को कॉल कर सकता है। – alex

-2

आप web.config

<connectionStrings> 

    <add name="ProductConnection" providerName="System.Data.SqlClient" connectionString="_YOUR_CONNECTION_STRING_1_"/> 

    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="_YOUR_CONNECTION_STRING_2_"/> 

</connectionStrings> 

अपने कोड आप की तरह उपयोग कर सकते हैं में अनुभाग में एक से अधिक कनेक्शन तार परिभाषित कर सकते हैं

ConfigurationManager.ConnectionStrings["ProductConnection"] कनेक्शन स्ट्रिंग प्राप्त करने के लिए।

यदि आप कनेक्शन स्ट्रिंग के आधार पर कोई उदाहरण प्राप्त करना चाहते हैं, तो आप किसी भी फैक्ट्री का उपयोग कर सकते हैं जो कनेक्शन स्ट्रिंग नाम के आधार पर आपके इंस्टेंस को हल कर सकता है। सरल फैक्टरी + एकता या सरल फैक्टरी + ऑटोफैक इसमें आपकी सहायता कर सकता है।

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