gpt4 book ai didi

entity-framework - Unity Lifetime Managers & EF Data Context --> 最佳实践

转载 作者:行者123 更新时间:2023-12-04 02:10:04 24 4
gpt4 key购买 nike

全部,

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

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

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

这里真正的最佳实践是什么?
  • Microsoft 开发人员网络了解终身经理 - http://msdn.microsoft.com/en-us/library/ff660872(v=PandP.20).aspx
  • MVC DI 和 Unity 与 Lifetime Manager 通过 CodeProject - http://www.codeproject.com/Articles/424743/MVC-DI-Unity-with-Lifetime-Manager
  • ASP.NET MVC 技巧:使用 Unity 应用程序 block 的依赖注入(inject)来自 Shiju Varghese 的博客 - 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 使用 Unity 跨多种类型注入(inject)相同的 DataContext 实例 - Inject same DataContext instance across several types with Unity
  • 最佳答案

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

    在每个请求上创建的 PerHttpRequestLifetimeManager 或子容器是处理这种情况的典型方式。

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

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

    关于entity-framework - Unity Lifetime Managers & EF Data Context --> 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18253100/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com