簡體   English   中英

ASP.NET MVC。 Autofac和多個連接字符串

[英]ASP.NET MVC. Autofac and multiple connection strings

我需要在ASP.NET MVC應用程序中使用多個連接字符串。 我怎么能這樣做? 現在我正在注冊連接如下:

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

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

您可以按名稱注冊給定類型的多個實例:

來自Autofac教程:

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

要檢索命名服務,請使用ResolveNamed()方法:

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

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

一種方法是創建自己的連接工廠,並使用autofac進行注冊。 就像是:

interface IConnectionFactory{
   SqlConnection CreateConnection(string connectionStringName);
}

您可以在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"]獲取連接字符串。

如果要獲取基於連接字符串的實例,可以使用任何可以根據連接字符串名稱解析實例的工廠。 SimpleFactory + UnitySimpleFactory + Autofac可以為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM