где объявлять сущности и сервисы в контроллере - PullRequest
0 голосов
/ 01 марта 2012

где лучшее место для объявления сущностей и сервисов, используемых в контроллере?в конструкторе или в действии?

    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);
            }
        }
    }

1 Ответ

0 голосов
/ 01 марта 2012

Я бы объявил их в конструкторе и предоставил перегрузку, чтобы я мог вводить подделки для целей модульного тестирования.

    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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...