我有城堡核心问题,我正在尝试将两个不同的数据库连接注入(inject)到特定的存储库。

public class Repository1 {
  public Repository1(System.Data.Common.DbConnection conn) { }
}
public class Repository2 {
  public Repository2(System.Data.Common.DbConnection conn) { }
}

现在例如,我想将 Mysql 连接注入(inject)到 Repository1,将 Oracle 连接注入(inject)到 repository2。

最佳答案

像这样的东西:

container.Register(Component
    .For<DbConnection>()
    .ImplementedBy<MysqlConnection>()
    .Named("mysql"));
container.Register(Component
    .For<DbConnection>()
    .ImplementedBy<OracleConnection>()
    .Named("oracle"));

container.Register(Component
    .For<Repository1>()
    .ServiceOverrides(new { conn = "mysql" }));
container.Register(Component
    .For<Repository2>()
    .ServiceOverrides(new { conn = "oracle" }));

您可能需要调整 DbConnection 注册,因为我不知道确切的类名可能是什么,或者它们是否需要其他配置设置。

关于.net - 温莎城堡问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7158858/

10-13 02:58