大约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>();
答案 0 :(得分:0)
默认情况下,Ninject允许您自动解析具体类型。
有关更多信息,您可以阅读Ninject Wiki:https://github.com/ninject/ninject/wiki/Dependency-Injection-With-Ninject