これは、ServiceStack.net で Funq を使用して複数の IDbConnectionFactory インスタンスを登録する方法からの質問の続きです。
私は同じことをする必要があります(1つのサービスが異なるdb接続にアクセスするようにします)-しかし、上記のstackoverflowの議論に対する答えは私にとって完全には意味がありません(そしてSOはコメントを追加させません)。
IDbConnectionFactory (OrmLiteConnectionFactory) などの依存クラスの実装をサービスごとに複数回使用できないということですか? 複数を使用する必要がある場合は、新しい実装を作成する必要があります (一意のクラス名を取得する以外の理由はありません)。
私は、(container.Register メソッドの) name パラメーターが (同じクラスの追加のインスタンスを識別するための) 目的であることを望んでいました。たとえば、次のようなものがあれば便利です: container.Register("Db_1", c => new OrmLiteConnectionFactory(connString1, SqlServerOrmLiteDialectProvider.Instance)); container.Register("Db_2", c => new OrmLiteConnectionFactory(connString2, SqlServerOrmLiteDialectProvider.Instance)); 次に、サービス内の各接続を次のように使用します: Db["DB_1"].Select... Db["DB_2"].Select または Db_1.Select.. Db_2.Select...
私を怠け者と呼んでください。しかし、新しい型名を取得する以外の目的でクラスを作成することは (追加のプロパティ/メソッドなしで 100% 継承するため)、冗長に思えます。
IoC/DI のいくつかの重要なポイントが欠けていると思いますので、誰かが私をまっすぐに設定していただければ幸いです。
ありがとうティム