Sib*_*Guy 5 c# asp.net-mvc dependency-injection unity-container
我需要为每个请求注入EF上下文.有没有办法实现它?
Unity讨论列表中提出的解决方案是为每个请求创建一个子容器,让该子容器创建EF上下文作为ContainerControlledLifetime,然后将子容器放置在请求的末尾.通过这样做,您不必创建自定义LifetimeManager.
我对Unity不是很熟悉,但原理是这样的:
Application_BeginRequest(...)
{
var childContainer = _container.CreateChildContainer();
HttpContext.Items["container"] = childContainer;
childContainer.RegisterType<ObjectContext, MyContext>
(new ContainerControlledLifetimeManager());
}
Application_EndRequest(...)
{
var container = HttpContext.Items["container"] as IUnityContainer
if(container != null)
container.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5018 次 |
最近记录: |