Я пытаюсь реализовать общий репозиторий и единицу рабочих шаблонов в соответствии с этим tutorial. В дополнение к шаблонам я также использовал Ninject для инъекции зависимостей для моего веб-приложения.Реализация общего хранилища и единицы рабочих шаблонов
Конкретных привязок, которые я использовал здесь:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(IGenericRepository<>))
.To(typeof(GenericRepository<>)).InSingletonScope();
kernel.Bind<IUnitOfWork>()
.To<UnitOfWork>();
}
Однако в соответствии с обучающим, мне нужно передать DbContext
каждой собственности хранилища в моем UnitOfWork
классе, так что все хранилище будет делиться только один DbContext
экземпляром как здесь:
public GenericRepository<Course> CourseRepository
{
get
{
if (this.courseRepository == null)
{
this.courseRepository = new GenericRepository<Course>(context);
}
return courseRepository;
}
}
вопрос заключается в том, как я могу передать DbContext
экземпляр (проживающий в UnitOfWork
классе) к GenericRepository
, когда экземпляр GenericRepository
вводится Ninject? Я знаю о методе WithConstructorArgument
, но я не могу использовать его в своих вызовах kernel.Bind
, потому что в это время я не буду иметь доступ к экземплярам DbContext
.
значит, что я должен связать 'IGenericRepository' к' RepositoryFactory' и пусть завод решить, какой конкретный репозиторий создать? – rexcfnghk