我有一个Mvc5-WebApi2应用程序,它使用StructureMap进行依赖注入,使用StructureMap.Mvc5和StructureMap.WebApi2 Nuget包。我想为MVC和Web控制器注册带有HttpContext生命周期的EF 6 DbContext。有人能指出我如何为MVC和WebApi实现这一目的的简洁解释吗?通常,如何在每个请求容器中注册某些依赖项,在父容器中注册其他依赖项?
答案 0 :(得分:4)
HttpContext
绑定生命周期的推荐方法是利用StructureMap的nested containers。
这可以通过配置StructureMap容器然后创建容器的嵌套实例并在请求开始时将其存储在HttpContext
中并在整个HttpRequest中使用该容器,然后在最后处理它( see here for the source code)。
您可以自己设置(see this blog post on how to do this),也可以使用这两个NuGet包为您完成:
StructureMap.MVC5和StructureMap.WebApi。
设置完成后,您就可以注册
DbContext
以正常方式:
this.For<DbContext>.Use(new DbContext(connectionString));
我希望这会有所帮助。如果您有任何疑问,我会尽力帮助您。