我正在构建一个ASP.NET MVC应用程序。我是整个存储库/工作单元模式的新手。我正在为我的EF对象实现通用存储库。
我意识到确保每个Http请求只有一个DbContext存在问题......我非常确定我可以通过使用OWIN创建实例来实现这一点。
/// <summary>
/// Configures OWIN
/// </summary>
/// <param name="app"></param>
public void Configuration(IAppBuilder app)
{
// Create instance of database context
app.CreatePerOwinContext<QuizEntitiesDbContext>(GetQuizEntitiesDbContext);
}
/// <summary>
/// Returns an instance of the QuizEntitiesDbContext database context
/// </summary>
/// <returns></returns>
public static QuizEntitiesDbContext GetQuizEntitiesDbContext()
{
return new QuizEntitiesDbContext();
}
现在,如果我想在我的控制器中获取该实例,这似乎很好,但实际上我需要能够通过我的通用存储库访问此实例...
我还在我的项目中使用了Ninject依赖注入器,并且我已经读过我可以获得每个HTTP请求的对象实例,以便在我的应用程序中使用,这有点像这样:
this.kernel.Bind(IMyDbContext).To(MyDbContext).InRequestScope();