Вытеснение бизнес-логики и сервисных вызовов из контроллера Нужна обратная связь - PullRequest
0 голосов
/ 29 мая 2019

У меня есть приложение MVC, которое я пытаюсь вытолкнуть бизнес-логикой из контроллеров в модели (затем сопоставить эти модели для просмотра моделей). Для этого я внедряю свои сервисы и репозитории в мои модели, а затем внедряю свои модели в контроллер.

С этого момента я использовал модель, чтобы либо заполнить себя, либо вернуть свой список, сопоставить его с моделью представления, которая будет возвращена контроллером.

Вопрос: это плохой дизайн? В частности, используя эту модель, например, сервис, чтобы вернуть свой список (то есть GetAllCars (), возвращающий List ) или любой другой его аспект?

Стоит ли пытаться сохранить свою бизнес-логику / доступ к данным в моих моделях?

Есть ли другой подход, который я должен использовать для обработки этого сценария?

    public class CarsController : Controller
    {
        private readonly CarModel _carModel;

        public CarsController(CarModel carModel)
        {
            _carModel = carModel;
        }

        public ActionResult GetCars()
        {
            List<CarViewModel> carViewModels = new List<CarViewModel>();
            carViewModels = _carModel.GetAllCars(); //some type of mapping would happen here
            return View(carViewModels);
        }

        public ActionResult GetCar(int id)
        {
            CarViewModel carViewModel = new CarViewModel();
            carViewModel = _carModel.GetCarById(id);//mapping to carViewModel here.
            return View(carViewModel);
        }
    }

    public class CarModel
    {
        private readonly IDataRepo _dataRepo;

        public int Make { get; set; }
        public int Model { get; set; }
        public int Color { get; set; }

        public CarModel(IDataRepo dataRepo)
        {
            _dataRepo = dataRepo;
        }

        public CarModel()
        {

        }

        public List<CarModel> GetAllCars()
        {
            List<CarModel> carModels = new List<CarModel>();
            carModels = _dataRepo.Car.ToList(); //some type of mapping would happen here
            return carModels;
        }

        public void GetCarById(int id)
        {
            this = _dataRepo.GetById(id); //some type of mapping would happen here
        }
    }

    public class CarViewModel
    {
        public int Make { get; set; }
        public int Model { get; set; }
        public int Color { get; set; }
    }
'''
...