2011-06-21 9 views
0

今はIConnect(文字列値を含む)を取り込む基本的なIRepositoryがあります。私は使用する接続文字列を決定するためにDI(構造マップ)を取得することに問題が発生しています。理論上、エンティティで属性を使用すると、これを判断するレジストリ/スキャナを記述できますが、簡単な方法があるのだろうかと思います。複数の接続文字列、1つの依存性注入リポジトリ

今私はこの

ObjectFactory.Initialize(factory => 
{ 
    factory.For<IConnect>().Singleton().Use<ConnectToMarket>() 
     .Ctor<string>("connectionString") 
     .Is(_marketConnectionString); 
    //and some other stuff 
}); 

アイデアのようなものがありますか?

答えて

3

異なるインタフェースから異なるリポジトリを派生させることができます。マーケット接続文字列で構築されたIMarketRepositoryがあるとします。そのため、marketconnectionstringを使用するすべてのリポジトリは、その接続文字列を使用して構築されます(正しく登録する必要があります)。

複数の接続文字列に同じリポジトリを使用する必要はないと思いますか?

もう1つの解決策は、IConnectionStringまたはコンストラクタで指定できるものを複数実装することです。

どちらの解決策も本当にいいとは言えません。

+0

これはまさに私がやったことです。私はIConnectToMarketを作った:IConnectは次にMarketRepositoryを作成した。誰かが間違ったデータベースにエンティティを伝えようとしなかったことを保証するために、ILiveInMarket制約を追加しました。それはちょっと吸いますが、それは動作します – jeriley