多个连接字符串,一个具有依赖注入的存储库

时间:2011-06-21 12:47:32

标签: dependency-injection structuremap

现在我有了一个基本的IRepository,它接收IConnect(包含一个字符串值)。我遇到了一个问题,我的DI(结构图)确定要使用哪个连接字符串。从理论上讲,如果我在实体上使用一个属性,我可以编写一个确定这个的注册表/扫描程序,但我想知道是否有更简单的方法来做到这一点?

现在我有类似的东西

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

想法?

1 个答案:

答案 0 :(得分:3)

您可以从不同的接口派生不同的存储库。假设您有一个IMarketRepository,它是用市场连接字符串构建的。因此,使用marketconnectionstring的所有存储库都是使用该连接字符串构建的(前提是您正确注册)。

我假设您不必为多个连接字符串使用相同的存储库?

另一种解决方案可能是制作IConnectionString的多个实现或者您可以在构造函数中指定的内容。

我必须说两种解决方案都不是很好。