2011-06-21 21 views
0

現在我有一個基本的IRepository接受IConnect(包含一個字符串值)。我遇到了讓我的DI(結構圖)確定使用哪個連接字符串的問題。理論上,如果我在實體上使用屬性,我可以編寫一個註冊表/掃描器來確定這一點,但我不知道是否有更簡單的方法來實現它?多個連接字符串,一個存儲庫與依賴注入

現在我有這樣的事情

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

想法?

回答

3

您可以從不同的接口派生不同的存儲庫。假設你有一個IMarketRepository這是用市場連接字符串構建的。因此,使用marketconnectionstring的所有存儲庫都使用該連接字符串構建(只要您正確註冊)。

我假設您不必爲多個連接字符串使用同一個存儲庫?

另一種解決方案可能是製作IConnectionString或您可以在構造函數中指定的東西的多個實現。

這兩種解決方案都不是很好,我必須說。

+0

這正是我所做的。我做了一個IConnectToMarket:IConnect然後創建了MarketRepository 。爲了確保有人不嘗試告訴實體錯誤的數據庫,我添加了ILiveInMarket約束。它有點糟糕,但它有效 – jeriley