实体框架 – Unity Lifetime Managers和EF Data Context – >最佳实践

前端之家收集整理的这篇文章主要介绍了实体框架 – Unity Lifetime Managers和EF Data Context – >最佳实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所有,

有很多关于Unity Lifetime Managers的帖子,但我还没有发现有人说“在这些情况下你应该总是使用X”这是一个很好的经验法则.让我描述一下我的应用程序,我有一个ASP.NET MVC 4 Web应用程序.我有一个包含3个项目的Visual Studio解决方案,我的’Core’项目包含我的所有EF内容,测试项目和MVC Web项目.我使用Unity进行依赖注入,现在有以下代码

// Context
container.RegisterType<IDatabaseFactory,DatabaseFactory>(
    new ContainerControlledLifetimeManager();
container.RegisterType<UnitOfWork>(
    new ContainerControlledLifetimeManager());

但是,我注意到我的上下文没有重新创建每个新的Web请求,这是我认为我想要的(如果我在这个假设中错了,请告诉我).我很难分析下面列出的网站的所有信息,并阅读了很多人创建自己的名为PerHttpRequestLifetimeManager的类来处理这个问题.

这里最好的做法是什么?

>通过微软开发者网络了解终身经理 – http://msdn.microsoft.com/en-us/library/ff660872(v=PandP.20).aspx
> MVC DI&通过CodeProject与Lifetime Manager统一 – http://www.codeproject.com/Articles/424743/MVC-DI-Unity-with-Lifetime-Manager
> ASP.NET MVC提示:通过Shiju Varghese的博客使用Unity应用程序块进行依赖注入 – http://weblogs.asp.net/shijuvarghese/archive/2008/10/24/asp-net-mvc-tip-dependency-injection-with-unity-application-block.aspx
> MVC,EF – 通过堆栈溢出在Unity中的DataContext单例实例Per-Web-Request – MVC,EF – DataContext singleton instance Per-Web-Request in Unity
>通过Stack Overflow-Inject same DataContext instance across several types with Unity在Unity中注入多个类型的相同DataContext实例

解决方法

是的,您通常需要每个请求一个DbContext.

在每个请求上创建的PerHttpRequestLifetimeManager或子容器是处理它的典型方法.

最新版本的Unity引入了Unity bootstrapper for ASP.NET MVC,它有一个新的内置生命周期管理器:PerRequestLifetimeManager.

您可以在Developer’s Guide to Dependency Injection Using Unity第3章Dependency Injection with Unity中阅读更多内容.

猜你在找的asp.Net相关文章