请解释我的 DbContext 是如何被实例化的?

Please explain how my DbContext is being instantiate?

大约 3 年前,我构建了一个 Web API 并使用 Ninject 为 DI 创建了一个通用存储库。今天我正在审查我的代码以进行一些更改,但我无法理解我的 DbContext 在哪里被实例化。我不记得我没有做什么,我相信这是我在 Generic Repo 上阅读的一堆实现的混合体。

我花了很多时间阅读在线文档,但找不到答案。有人可以向我解释一下,以便我可以正确记录吗?下面是我的示例通用存储库、应用程序存储库、我的控制器和 Ninject 绑定。我知道在 .net 核心中你可以从启动时注入它,但这是 web api 2 使用 EF6.

通用回购:

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>();

默认情况下,Ninject 允许您 auto-resolve 具体类型。

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