2015-06-19 5 views
3

MVC. Я передаю данные в представление в моей модели. В моем репозитории я сопоставляю результат linq с моделью. В контроллере я отправляю данные. Какой я должен сделать:Должен ли я создать новую модель?

List<PersonModel> people = new List<PersonModel>(); 
people = repo.GetPersonList(); 
return View(people); 

Или

List<PersonModel> people = repo.GetPersonList(); 
return View(people); 

Как я уже говорил, в репо я карта результат в модели, с новой моделью, например:

var query = from p in _db.Person 
        orderby f.LastName 
        select new PersonModel 
        { 
         Id = f.PersonId, 
         LastName = f.LastName 
        }; 
return query.ToList(); 

Либо один работает. Я использую второй, потому что, по моему мнению, репо создает новую модель, а затем передает ее контроллеру, когда я вызываю функцию repo.GetPersonList. Должен ли я создать новый экземпляр в контроллере, или продолжить, как я?

+0

Я предпочитаю отправить один. Это более читаемо. –

ответ

4

Идите со вторым.

Ваш первый фрагмент имеет избыточный вызов new List<T>, который выделяет новый список, в то время как следующая строка переопределяет эту ссылку с вновь созданным списком из вашего repo. Абсолютно никакой необходимости в этом.

1

Если на вашем контроллере, он несет ответственность за repository, чтобы обеспечить ViewModel и не indend, чтобы контроллер, чтобы добавить новый PersonModel к ViewModel, то вы должны обязательно придерживаться второго.

Смежные вопросы