Многие люди предлагают держать контроллер маленьким и худым.
Да.Люди имеют в виду, что контроллер не должен содержать никакой логики, кроме отображения модели <->.Под моделью я подразумеваю « M » в MVC.
Q2.Мы используем linq2sql в качестве уровня доступа к данным. Должен ли я использовать табличную сущность в моей модели представления вместо создания отдельного класса модели?Эксперт сказал, что это плохо, но если создать отдельный класс модели, я в основном повторяю их, и мне также нужно копировать это значение в сущность linq 2sql каждый раз, когда я хочу сохранить данные, это не так весело, слишком много работы.
Нет.Вы не должны.Прочитайте мой ответ здесь: ASP.NET MVC Где разместить настраиваемые атрибуты проверки
Использовать структуру сопоставления для модели -> преобразование модели представления.
Обновление:
Из того, что я понимаю, вы предлагаете собрать viewmodel внутри контроллера (я имею в виду вызов бизнес-уровня или репозитория для получения моих данных) и использовать контроллер для вызова бизнес-логики, имеющей дело сданные, я прав?
да.Контроллер действительно является связующим звеном между вашим бизнес-уровнем / репозиториями и вашими представлениями.Представления (и модели представлений) не должны ничего знать о них, а бизнес-уровень / репозитории не должны ничего знать о контроллере / представлении.
Контроллер был создан именно для этой цели.Создать абстракцию между уровнем пользовательского интерфейса и нижними уровнями.Следовательно, единственный код, который должен существовать в контроллере, состоит в том, чтобы сделать это возможным (и, следовательно, следуя принципу единой ответственности)
Если вы начнете добавлять эту логику в свои модели представлений, вы начнете добавлять связь между нижними уровнями иуровень пользовательского интерфейса.Поэтому внесение любых изменений в нижние уровни также повлияет на все модели представлений (вместо контроллера
).