Выполнение работы с базой данных на свойствах модели в Mvc ViewModel - PullRequest
0 голосов
/ 29 мая 2019
 public class CityViewModel
    {
        public List<City> GetCities { get; set; }
        public City CityDetail { get; set; }
    }

Это моя ViewModel, и я хочу узнать, хороший ли это способ использовать операцию базы данных непосредственно в свойстве Model. Например,

public List<City> GetCities
{
         get{
            return {some method for getting list from database};
            } 
         set
            {
            }

}

Единственное требование - мне понадобится этот список несколько раз, и я не хочу продолжать вызывать одну и ту же строку, чтобы получить доступ к этому списку из базы данных везде. И просто хочу всякий раз, когда я создаю новый экземпляр этой модели представления, я могу получить этот список автоматически Так это хороший способ для этого?

1 Ответ

2 голосов
/ 29 мая 2019

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, следовательно, нет повторения кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...