Существует ли стандартная модель "соотношение" контроллера при попытке реализовать хороший ASP.NET MVC? - PullRequest
2 голосов
/ 24 августа 2009

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

Исходя из того, что я прочитал, модель представляет собой представление реальных бизнес-объектов, поэтому я просто хотел бы сделать ее одной большой моделью или разделить их на основе элементов приложения? на основе реального восприятия данных пользователем / клиентом?

Спасибо за ваш совет.

Ответы [ 2 ]

2 голосов
/ 24 августа 2009

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

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

Модели инкапсулируют данные. Их дизайн должен быть продиктован данными, которые они инкапсулируют. Требования системы определяют, какие модели вам понадобятся и какие данные они должны хранить.

Не пытайтесь обдумать это. Для данного запроса определите, что вам нужно показать в вашем представлении и как оно будет отображаться. Определите, как будет выглядеть подходящая модель для этого сценария. Если он уже существует, используйте его. Если нет, создайте новую модель. Сохраните переподготовку позже, когда будете знать, что вам нужно, и сможете найти общие черты между моделями.

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

1 голос
/ 25 августа 2009

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

Однако лично я не стал бы связывать какое-либо представление с какой-либо моделью, а создал бы промежуточный слой, называемый ViewModel, который по сути делит данные вашей модели в соответствии с конкретным видом. В этом случае отношения один к одному. По сути, именно так работают шаблоны Presenter. Каждое представление строго типизировано в свою собственную ViewModel, которая заполняется из слоя Model.

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

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