5

我需要在我的 ASP.NET MVC 应用程序中使用多个连接字符串。我该怎么做?现在我正在注册连接,如下所示:

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

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

3 回答 3

5

您可以按名称注册给定类型的多个实例:

来自 Autofac 教程:

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

要检索命名服务,使用 ResolveNamed() 方法:

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

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

于 2013-07-08T05:28:48.123 回答
0

一种方法是创建自己的连接工厂,并将其注册到 autofac。就像是:

interface IConnectionFactory{
   SqlConnection CreateConnection(string connectionStringName);
}
于 2013-07-08T05:18:01.973 回答
-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 + UnitySimpleFactory + Autofac可以在这方面为您提供帮助。

于 2013-07-08T05:35:51.173 回答