Ninject保持同样的DbContext

时间:2018-01-29 09:22:38

标签: c# entity-framework ninject


我遇到了DbContext,

的问题
class RepoA : IRepoA {
   public RepoA(IDbContext context)...
}

class RepoB : IRepoB{
    public RepoB(IDbContext context)...
}

和Ninject

kernel = new StandardKernel();
kernel.bind<IDbContext>().to<DbContext>();
kernel.bind<IRepoA>().to<RepoA>();
kernel.bind<IRepoB>().to<RepoB>();

在这种情况下,IDbContext创建了两次。 我希望RepoA和RepoB共享相同的IDbContext对象

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您应该使用范围界定(请参阅https://github.com/ninject/Ninject/wiki/Object-Scopes)。例如。在单例范围内绑定DbContext,如下所示:

kernel.Bind<IDbContext>().To<DbContext>().InSingletonScope();

应该让存储库共享对象。 InSingletonScope()可能不适合您的用途,但这取决于您的申请。