2017-01-11 6 views
-1

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

public class Employee{ 
public int Id {get;set;} 
public string Name {get;set;} 
public int ManagerId {get;set;} 
public int ProfileId {get;set;} 
} 

Все хорошо, я могу добавить и обновить сотрудник. Если мне нужна информация о менеджере на странице, я могу сделать отдельный запрос для данных менеджера. Теперь, если мне нужно отобразить таблицу с тысячами сотрудников, и мне нужно имя менеджера, я не могу сделать запрос менеджера для каждого сотрудника. Я мог бы заменить ManagerId на объект Manager, но в большинстве случаев он не нужен. Мы могли бы создать отдельную модель для данной таблицы, но что делать, если вам нужна другая меньшая деталь в другой таблице, которая связана с ProfileId, мы создаем для этого еще одну модель? У нас будет много подобных моделей, это будет беспорядок, и нам нужны методы для запроса данных для каждого из них.

Что делают люди, это то, что они добавляют ManagerName в эту модель, просто небольшое свойство, которое волнует? И тогда вам нужно ProfileName, поэтому мы добавим это. И тогда еще небольшая деталь, которую нам нужно показать в другой таблице, «бесполезно создавать другую модель только для этого, правильно»? Проблема в худших случаях заключается в том, что мы имеем модель, обладающую свойствами, которые непосредственно не связаны с ней, и вы не знаете, что это такое. Различные методы в репозитории будут получать данные только для некоторых из этих дополнительных свойств, что еще более затрудняет понимание.

Что было бы лучшим опытом в этом случае? есть немного информации о том, как бороться с такими вещами.

ответ

0

IMHO, лучший подход - применить шаблон ViewModel и создать один ViewModel для каждого представления. Я знаю, что на первый взгляд это может показаться пустой тратой времени, но вы должны иметь в виду, что обычно разные взгляды имеют разные требования и поля. Этот подход хорош, чтобы иметь четкое разделение между пользовательским интерфейсом вашего приложения и логикой приложения.

Принять согласованное соглашение об именах - это хороший способ избежать попадания в путаницу с неясными режимами просмотра.

Посмотрите на this article, чтобы получить более подробную информацию о шаблоне (автор упоминает WPF и Silverlight, но принцип аналогичен MVC).

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

  • Нет связанных вопросов^_^