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

これを行う 1 つの方法は、独自の接続ファクトリを作成し、それを 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 + UnityまたはSimpleFactory + Autofacがこれに役立ちます。

于 2013-07-08T05:35:51.173 に答える