Модели EF4 и модели MVC и модели просмотра ... Для модели или нет модели? - PullRequest
0 голосов
/ 29 июня 2011

В настоящее время я работаю с EF4 и asp.net mvc 3, и у меня определенно возникают проблемы при работе с различными типами моделей, которые возможны, когда вы объединяете эти технологии.

У меня естьбаза данных, которую я определил, и через EF4 у меня есть модель моей базы данных.Но есть также модель, которая передается на мой взгляд, а как насчет моделей представления ???

Допустим, у меня есть модель проекта MVC.Этот проект имеет описание, название и свойства категории.У меня есть страница просмотра, которая создает проект и возвращает его обратно в контроллер для вставки в базу данных через ef4.Поэтому я изначально создал класс с этими точными свойствами, чтобы стать моей моделью.Однако моей странице также требуется список категорий для выбора при создании этого проекта, поэтому я добавил в мою модель строковый массив, который был передан на страницу вместе с другими свойствами как часть модели моего проекта, и он работал нормально.Все замечательно ... но я задумался ... потому что, если модель проекта моделирует проект, у нее не должно быть полного списка категорий.Он должен иметь только категорию, которая является частью этого проекта.

Но где этот полный список категорий.По мнению сумка?Это кажется мне неправильным?Должен ли я создавать модель представления?Как будет выглядеть эта модель?Как насчет добавления метода к модели проекта, который был бы чем-то похожим на GetCategories (), тогда я мог бы вызвать этот метод со страницы представления ... но разве это нарушает идеальное разделение интересов в mvc?

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

Спасибо,

1 Ответ

0 голосов
/ 29 июня 2011

Во всех, но самых простых приложениях лучше не передавать объекты модели в представления.View должен иметь ViewModel, который создается контроллером с использованием данных из объектов Model и который содержит все, что View требуется для отображения его информации.

ViewModels отделяет ваш уровень представления от вашего бизнес-уровня, и ваш пример демонстрирует, почемуэто важно;Вашему представлению нужна информация о Project, но также и полный список всех Categories, которым Project может принадлежать - такой список логически не вписывается в объектную модель Project, но идеально логично вписывается вProjectViewModel.

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