app.CreatePerOwinContext(DataContext.Create);
我在上面一行创建了一个数据上下文,当我启动一个新的MVC 5项目时,此代码随项目一起提供。同时,我正在使用autofac在依赖项注册器中为每个请求注入单个实例。
builder.RegisterType<DataContext>().As<IDbContext>().InstancePerRequest();
使用owin和DI容器的最佳方法是什么?
我有一个DataContext类,它具有一个如上所述的称为Create
的静态方法,例如,当我尝试在数据库类中插入记录器时,此中断。
我也对一个示例项目感兴趣,如果有的话,它说明了同一项目中的DI和owin。
不必同时使用OWIN和DI容器。我能理解您的困惑,因为有关CreatePerOwinContext的文档非常稀疏,但事实是,此功能仅作为“穷人的DI”实现,并且可能应由常规的DI框架代替。微软ASP.NET团队的郝恭(Hao Kung)说您free to replace it with a proper DI framework。
如果您不是要获取由OWIN中间件创建的实例,而是将上下文注入控制器中,则可以安全地将其删除。只要记住要相应地更新脚手架控制器即可。