我需要在ASP.NET MVC应用程序中使用多个连接字符串。我怎么能这样做?现在我注册连接如下:
builder.RegisterType<SqlConnection>().WithParameter(
"connectionString",
WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString)
.InstancePerLifetimeScope()
.ExternallyOwned();
builder.Register(c => new ContextDataContext(c.Resolve<SqlConnection>())).InstancePerDependency();
答案 0 :(得分: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
答案 1 :(得分:0)
一种方法是创建自己的连接工厂,并使用autofac进行注册。 类似的东西:
interface IConnectionFactory{
SqlConnection CreateConnection(string connectionStringName);
}
答案 2 :(得分:-3)
您可以在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 + Unity 或 SimpleFactory + Autofac 可以为您提供帮助。