简体   繁体   English

ASP.NET MVC。 Autofac和多个连接字符串

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

I need to use multiple connections string in my ASP.NET MVC application. 我需要在ASP.NET MVC应用程序中使用多个连接字符串。 How I can to do it? 我怎么能这样做? Now i'm registering connection as following: 现在我正在注册连接如下:

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

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

You can register multiple instances of a given type by name: 您可以按名称注册给定类型的多个实例:

From Autofac tutorial: 来自Autofac教程:

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

To retrieve a named service, the ResolveNamed() method is used: 要检索命名服务,请使用ResolveNamed()方法:

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

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

One way to do it, is to create your own connection factory, and register it with autofac. 一种方法是创建自己的连接工厂,并使用autofac进行注册。 Something like: 就像是:

interface IConnectionFactory{
   SqlConnection CreateConnection(string connectionStringName);
}

You can define multiple connection strings in section in web.config 您可以在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>

In your code you can use like, 在您的代码中,您可以使用,

ConfigurationManager.ConnectionStrings["ProductConnection"] to get the connection string. ConfigurationManager.ConnectionStrings["ProductConnection"]获取连接字符串。

In case you want to get an instance based on connection string, you can use any factory which can resolve your instance based on connection string name. 如果要获取基于连接字符串的实例,可以使用任何可以根据连接字符串名称解析实例的工厂。 SimpleFactory + Unity or SimpleFactory + Autofac can help you in this. SimpleFactory + UnitySimpleFactory + Autofac可以为您提供帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM