2013-07-08 9 views
5

ASP.NET MVCアプリケーションで複数の接続文字列を使用する必要があります。私はそれをどうやってすることができますか?今私は、次のような接続を登録している:それを行うにはASP.NET MVC。オートファックと複数の接続文字列

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

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

答えて

3

:よう 何かという名前のサービスを取得するには

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

、ResolveNamed()メソッドがあります使用:

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

+0

ありがとうございます。あなたは私にエントリーポイントを与えて、Keyedメソッドを使うことにしました。 – alexmac

0

一つの方法を、独自の接続ファクトリを作成し、autofacに登録することです。 Autofacチュートリアルから

:あなたが名前によって指定されたタイプの複数のインスタンスを登録することができます

interface IConnectionFactory{ 
    SqlConnection CreateConnection(string connectionStringName); 
} 
+0

これは、複数の接続文字列の使用にどのように役立つと思われますか?ファクトリを使用することは、使用前にコンポーネントのカスタム初期化が必要な場合に意味があります。たとえそれが有用であっても、コアの質問に対する答えではありません。 (または私はあなたがそれを使用する方法を見ていません) – kubal5003

+0

@ kubal5003、彼の工場は、名前に基づいて、指定された接続文字列との接続を作成するので、彼のコードはこのファクトリメソッドを呼び出して必要な接続を取得できます。 – alex

-2

あなたは、接続文字列を取得するために

ConfigurationManager.ConnectionStrings["ProductConnection"]、同様に使用することができます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> 

のセクション内に複数の接続文字列を定義することができます。

接続文字列に基づいてインスタンスを取得する場合は、接続文字列名に基づいてインスタンスを解決できる任意のファクトリを使用できます。 シンプルファクトリー+ユニティまたはSimpleFactory + Autofacはあなたを助けることができます。

関連する問題