如何使用StructureMap,MVC 5和WebApi 2注册每个请求依赖项?

时间:2015-05-27 14:09:31

标签: asp.net-mvc-5 entity-framework-6 asp.net-web-api2 structuremap

我有一个Mvc5-WebApi2应用程序,它使用StructureMap进行依赖注入,使用StructureMap.Mvc5和StructureMap.WebApi2 Nuget包。我想为MVC和Web控制器注册带有HttpContext生命周期的EF 6 DbContext。有人能指出我如何为MVC和WebApi实现这一目的的简洁解释吗?通常,如何在每个请求容器中注册某些依赖项,在父容器中注册其他依赖项?

1 个答案:

答案 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.MVC5StructureMap.WebApi

设置完成后,您就可以注册 DbContext以正常方式:

this.For<DbContext>.Use(new DbContext(connectionString));

我希望这会有所帮助。如果您有任何疑问,我会尽力帮助您。