加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 00:06:01 所属栏目:asp.Net 来源:网络整理
导读:所有, 有很多关于Unity Lifetime Managers的帖子,但我还没有发现有人说“在这些情况下你应该总是使用X”这是一个很好的经验法则.让我描述一下我的应用程序,我有一个ASP.NET MVC 4 Web应用程序.我有一个包含3个项目的Visual Studio解决方案,我的’Core’项目
所有,

有很多关于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中阅读更多内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读