ViewModels - это pocos, они не должны иметь возможность доступа к базе данных сами, они также не должны иметь доступ к самим моделям, также не является обязанностью Viewmodel заполнять себя. В идеале ваш слой доступа к данным должен отображать ваши модели в модели и модели в моделях
A CityViewModel
должен быть копией модели City
с некоторыми изменениями, а GetCities
должен быть методом на уровне доступа к данным, например: -
public List<CityViewModel> GetCities()
{
var cities = cityRepository.GetAll();
List<CityViewModel> cityViewModelList = new List<CityViewModel>();
foreach(var city in cities)
{
CityViewModel cityViewModel = new CityViewModel
{
//map your properties
}
cityViewModelList.Add(cityViewModel);
}
return cityViewModelList;
}
тогда всякий раз, когда вам нужен список городов, вы просто называете GetCities
, следовательно, нет повторения кода