我正在嘗試按照此tutorial實現通用存儲庫和工作模式單元。除了模式之外,我還使用Ninject爲我的web應用程序執行依賴注入。實現通用存儲庫和工作模式單元
我所使用的特定的綁定在這裏:
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
類)到每當Ninject注入一個GenericRepository
的實例時,構造函數是否爲?我知道WithConstructorArgument
方法,但我不能在我的kernel.Bind
調用中使用它,因爲那時我將無法訪問DbContext
實例。
這意味着我必須'IGenericRepository'綁定到'RepositoryFactory'並讓工廠決定創建哪個具體的倉庫? – rexcfnghk 2013-04-10 01:50:17