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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 什么是实例化和配置DbContext在MVC中的最佳方式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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)。目的不是减少组件之间的耦合。

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