Модель MVC asp.net против моделей каркаса сущностей - PullRequest
13 голосов
/ 24 марта 2011

Лучше всего будет создать модель в папке asp.net mvc - model. Используйте эти модели с вашими представлениями и с помощью сервисного уровня, чтобы «адаптировать» мою модель к EF-модели.

Или вы использовали другой подход. Проблема с этим подходом состоит в том, что в большинстве случаев моя (самодельная) модель является копией EF-модели (не сухой)

Так может кто-нибудь объяснить мне, какие модели использовать с вашей точки зрения, потому что это становится очень запутанным. модель / viewmodel / Entityframeworkmodel ....

Решение:

Спасибо за ответы, все, наверное, я сейчас нахожусь, чтобы провести рефакторинг некоторых вещей!

Ответы [ 4 ]

23 голосов
/ 24 марта 2011

Правильный подход - использовать другой класс для ViewModel и другой для персистентности (сущности).Обычная причина заключается в том, что вам часто нужно отправлять некоторые дополнительные данные в представление (например, данные для заполнения раскрывающихся списков, данные для отключения некоторых полей и т. Д.), Использовать другую проверку или показывать только подмножество объекта.* Я не пурист.Если я вижу, что моя модель представления точно такая же, как и у сущности, я использую сущность напрямую, но я реорганизую код, как только мне потребуется дополнительная информация в представлении.Чаще всего я начинаю с сущностей и заканчиваю моделями представления из-за постепенного развития.

4 голосов
/ 24 марта 2011

Обычно у меня есть Просмотр моделей в папке Models и мои Доменные модели в слое ORM.

Модели просмотра (из названия) являются нормальными моделями для тех объектов, которые вам нужны только для облегчения процесса просмотра, они не имеют постоянства и могут содержать некоторую логику.

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

1 голос
/ 07 июня 2011

Ну, это не имеет смысла.Раньше я боролся с этим, я думаю, что вам нужна модель, которая не является табличным объектом, я назвал эту модель предметной области.Причина в том, что иногда, если вы используете linq2sql, вам приходится иметь дело с таблицей мостов / связей (которая не является реальной сущностью) и сложными вычислениями, поэтому вы не можете сделать это в вашей табличной сущности, верно?Поэтому мой подход - использовать ViewModel <-> Model <-> Entity

1 голос
/ 24 марта 2011

Что касается меня, я предпочитаю удалить папку Models в стандартной структуре MVC и добавить папку ViewModels, где я храню все модели представлений.Как упоминал Ладислав на первых итерациях, эти модели представления могут быть точной копией сущности из вашей модели предметной области, но постепенно они будут расти и будут сильно отличаться.

...