在哪里声明控制器中的实体和服务



哪里是声明控制器中使用的实体和服务的最佳位置?在构造函数中还是在操作中?

    public class CourseController : Controller
    {
        MyEntities entities; //DECLARE THIS HERE?
        private readonly IMyService _service; //DECLARE THIS HERE?
        public MyController()
        {
             entities = new MyEntities(); //INITIALIZE HERE?
            _service = new MyService(_entities); //INITIALIZE HERE?
        }

        public ActionResult Detail(int ID)
        {
            using (MyEntities _entities = new MyEntities ()) //OR DECLARE AND INITILIZE HERE?
            {
                IMyService _service = new MyService(_entities); //OR DECLARE AND INITILIZE HERE?
                var myCourse = _service.GetCourseById(ID);
                return View(myCourse);
            }
        }
    }

我会在构造函数中声明它们,并提供一个重载,这样我就可以为单元测试目的注入fake。

    private readonly MyEntities entities;
    private readonly IMyService _service;
    public MyController()
    {
        _entities = new MyEntities();
        _service = new MyService(_entities);
    }
    public MyController(MyEntities myEntities, IMyService myService)
    {
         entities = myEntities;
        _service = myService;
    }

最新更新