我有一个使用Ninject 3.2.2,ninject.mvc5 3.2.1,ninject.web.common 3.2.3和ninject.web.common.webhost 3.2.0的应用程序
应用正常运行时不会出现问题,但偶尔会出现错误:
“激活IDbFactory时出错 可以使用多个匹配的绑定。 匹配绑定: 1)从IDbFactory绑定到DbFactory 2)从IDbFactory绑定到DbFactory 激活路径: 4)将依赖项IDbFactory注入到OverviewRepository类型的构造函数的参数dbFactory中 3)将依赖项IOverviewRepository注入到OverviewService类型的构造函数的参数存储库中 2)将依赖项IOverviewService注入到HomeController类型的构造函数的参数overviewService中 1)请求HomeController
建议: 1)确保只为IDbFactory定义一次绑定。 “
我无法重现我的问题。
答案 0 :(得分:0)
我认为可以通过使用类构造函数中的“命名”注释来解决。例如,我有两个UnitsOfWork。
public AppsUnitOfWork([Named("AppsWork")] DbContext context) {
this.context = context;
}
public UnitOfWork([Named("UnitWork")]DbContext context) {
this.context = context;
}
我的绑定是这样的:
ninjectKernel.Bind<DbContext>().To<OracleDbContext>().Named("UnitWork");
ninjectKernel.Bind<DbContext>().To<AppsDbContext>().Named("AppsWork");