我有2个Dbcontext类AdminDbContext,和AppDbContext用于我的Web api项目,它们都实现了IDbcontext。
我的问题是 Ninject 无法解决依赖关系,所以我得到无参数构造函数错误
我没有任何特定条件,所以上下文绑定似乎很难,请帮助解决这个问题
如果我正确理解了这个问题,则无法将 IDbContext 注入您的类中,因为您有时需要 AdminDbContext,有时需要在同一类中使用 AppDbContext,因此您无法编写 Ninject 绑定。
在这种情况下,您可以编写一个 IDbContextFactory 接口并注入该接口。
public interface IDbContextFactory
{
IDbContext CreateAdminContext();
IDbContext CreateAppContext();
}
public class DbContextFactory : IDbContextFactory
{
//implementation of above interface methods to return the relevant context.
}
然后你的类可以注入它而不是上下文
public class YourClass
{
private readonly IDbContextFactory _factory;
public YourClass(IDbContextFactory factory)
{
_factory = factory;
}
public YourAdminMethod()
{
using (var context = _factory.CreateAdminContext())
{
//do stuff
}
}
public YourAppMethod()
{
using (var context = _factory.CreateAppContext())
{
//do stuff
}
}
}
然后你只需要在 IDbContextFactory 的 Ninject 绑定中有一个绑定,它可以是单例。
kernel.Bind<IDbContextFactory>().To<DbContextFactory>().InSingletonScope();