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

asp.net-mvc – 什么是实例化和配置DbContext在MVC中的最佳方式

发布时间:2020-12-15 19:17:55 所属栏目:asp.Net 来源:网络整理
导读:MVC 3 EF 4.1 我选择两种方法来处理DbContext: 在Application_BeginRequest中实例化,放入 HttpContext.Current.Items并在Application_EndRequest中进行处理。 创建一次性UnitOfWork(kindof wrapper for DbContext)和 使用(var unitOfWork = new)启动每个控
MVC 3 EF 4.1

我选择两种方法来处理DbContext:

>在Application_BeginRequest中实例化,放入
HttpContext.Current.Items并在Application_EndRequest中进行处理。
>创建一次性UnitOfWork(kindof wrapper for DbContext)和
使用(var unitOfWork = new)启动每个控制器操作
UnitOfWork()){…}

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

解决方法

我建议你使用依赖注入框架。您可以根据请求注册您的DbContext
container.RegisterType<MyDbContext>().InstancePerHttpRequest();

并将其作为构造函数参数注入到控制器。

public class MyController : Controller
{
    public MyController(MyDbContext myDbContext)
    {
         _myDbContext = myDbContext;
    }
}

如果注册类型实现IDisposable,那么DI框架将在请求结束时处理它。

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

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

(编辑:李大同)

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

    推荐文章
      热点阅读