Asp.net MVC Архитектура - PullRequest
       9

Asp.net MVC Архитектура

0 голосов
/ 15 ноября 2010

Я подхожу к концу моего первого проекта MVC, и я не слишком доволен тем, как я создал свои объекты Model, и я ищу некоторые идеи о том, как их улучшить.

Я использую репозитории для каждой таблицы БД с методами Get, Save, Delete и т. Д. Репозитории используют Linq2Sql для доступа к БД.

Я сопоставляю объекты Linq2Sql с объектами модели MVC, в основном это сопоставления от 1 до 1.

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

Например, у меня есть таблица пользователей. Администратор может редактировать сведения о пользователе так же, как и сам пользователь, поэтому я считаю, что у меня действительно должны быть объекты «AdminUserModel» и «UserModel», где «AdminUserModel» имеет больший набор значений (например, IsEnabled).

Таким образом, мой более важный вопрос заключается в том, какую архитектуру люди используют в дикой природе, чтобы отобразить много похожих связанных объектов Model вниз через слои в БД?

Какие-нибудь примеры архитектурных решений, которые кто-либо может предложить помимо NerdDinner?

спасибо заранее!

Ответы [ 2 ]

1 голос
/ 15 ноября 2010

Я обычно использую наследование в моих моделях. У меня обычно есть базовый класс сущности, который будет иметь id, datecreated, valid и любые другие поля, которые совместно используются сущностями (publishStatus, locked и т. Д.). При необходимости вы можете создать другие базовые классы, наследуемые от сущности: сущность человека, сущность продукта и т. Д.

таким образом, вы можете иметь общую базу репозиториев, ограниченную Entity или IEntity, и я обнаружил, что большинству функций CRUD сущностей не нужно намного больше поведения, чем предусмотрено общей базой (возможно, вам потребуется добавить несколько дополнительных методов get для некоторых типов)

В вашем случае AdminUser может наследоваться от User

1 голос
/ 15 ноября 2010

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

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

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