gpt4 book ai didi

asp.net-mvc - 在 MVC 中实例化和处置 DbContext 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 09:12:21 25 4
gpt4 key购买 nike

MVC 3 + EF 4.1

我在两种处理 DbContext 的方法之间进行选择:

  • Application_BeginRequest 中实例化, 把它放入HttpContext.Current.Items并丢弃在 Application_EndRequest .
  • 创建一次性 UnitOfWork(DbContext 的包装类型)和
    使用 using(var unitOfWork = new
    UnitOfWork()) { ... }
    开始每个 Controller 操作

  • 请分享您的经验:您更喜欢哪一个?每种方法的优缺点是什么?

    最佳答案

    我建议您使用依赖注入(inject)框架。您可以注册您的DbContext按要求

     container.RegisterType<MyDbContext>().InstancePerHttpRequest();

    并将其作为构造函数参数注入(inject) Controller 。
    public class MyController : Controller
    {
    public MyController(MyDbContext myDbContext)
    {
    _myDbContext = myDbContext;
    }
    }

    如果注册类型实现了 IDisposable然后 DI 框架将在请求结束时处理它。

    第一种方法:使用 ID 框架比手动实现要干净得多。此外,您的所有请求可能都不需要您的 UoW。

    第二种方法: Controller 不应该知道如何构造你的 UoW(DbContext)。目的不是减少组件之间的耦合。

    关于asp.net-mvc - 在 MVC 中实例化和处置 DbContext 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987908/

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