请说明我的DbContext如何实例化?

时间:2019-07-08 19:52:38

标签: c# dependency-injection entity-framework-6 dbcontext generic-repository

大约3年前,我构建了一个Web API,并使用Ninject for DI创建了一个通用存储库。今天,我正在检查我的代码以进行一些更改,但我不明白DbContext的实例化位置。我不记得自己没有,我相信这是我在Generic Repo上阅读到的许多实现的混合体。

我花了很多时间在线阅读文档,但找不到答案。有人可以向我解释一下,以便我适当地记录下来吗?以下是我的示例通用仓库,应用程序仓库,控制器和Ninject绑定。我知道在.net core中,您可以从启动时注入它,但这是使用EF6的Web API 2。

通用仓库:

public GenericRepository(DbContext _context, ILogService _log)
{
   this.context = _context;
   entities = context.Set<T>();      
}

实体仓库:

public ApplicationRepository(TransactionDbContext context) : base(context)
{

}

控制器:

public ApplicationController(IApplicationRepository _applicationRepository)
{
   this.applicationRepository = _applicationRepository
}

Ninject绑定: kernel.Bind<IApplicationRepository>().To<ApplicationRepository>();

1 个答案:

答案 0 :(得分:0)

默认情况下,Ninject允许您自动解析具体类型。

有关更多信息,您可以阅读Ninject Wiki:https://github.com/ninject/ninject/wiki/Dependency-Injection-With-Ninject