ASP.Net MVC 3 - 在BaseController中实例化数据上下文类

时间:2011-08-17 17:08:58

标签: asp.net-mvc-3 controller

在ASP.Net MVC 3中使用“具有读/写操作和视图的控制器,使用EntityFramework”作为模板添加控制器时,它会生成如下类:

namespace Project.Controllers
{ 
    public class Default1Controller : Controller
    {
        private ProjectEntities db = new ProjectEntities();

        ...
    }
}

现在,我想知道改变它是否是一个好习惯,以便我的Controller继承一个实例化ProjectEntities的自定义基本控制器。它看起来如下:

BaseController:

namespace MatchesHorsConcours.Controllers
{
    public class BaseController : Controller
    {
        protected MatchesEntities db = new MatchesEntities();
        ...
    }
}

其他管制员:

namespace Project.Controllers
{ 
    public class Default1Controller : BaseController
    {
    ...
    }
}

2 个答案:

答案 0 :(得分:2)

当您在母版页中需要逻辑时(例如,动态渲染菜单选项),此技术非常有用。在此处阅读:http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs

然而,一般来说这不是一项好技术。我建议使用依赖注入(Ninject适用于MVC并且易于实现)

答案 1 :(得分:1)

绝对不是。它完全不可测试。如果可能,请使用存储库模式和构造函数注入:Repository Pattern vs DAL