У меня есть приложение 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; }
}
'''