ASP.Net MVC Как отделить модели представлений от моделей БД? - PullRequest
0 голосов
/ 10 марта 2011

Я не могу решить, как мне отделить модели моего вида от моделей БД.

Я использую шаблон ActiveRecord для доступа к БД. Это означает, что я получаю экземпляр класса User для каждой строки User в базе данных.

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

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

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

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

То, что я ищу, - это несколько советов от лучших практик, я думаю: -)

Надеюсь, все это имело смысл, иначе, пожалуйста, спросите.

1 Ответ

2 голосов
/ 10 марта 2011

Я настоятельно рекомендую создать одну модель представления для каждого вида и использовать AutoMapper для сопоставления свойств из ваших активных записей с вашими моделями представления. Я не верю, что есть проблема с вашим контроллером, имеющим доступ к вашим моделям БД; контроллер должен отвечать за их преобразование в модели представлений.

Что касается перевода моделей представлений (действительно моделей данных) в активные записи, вы можете использовать AutoMapper для этого, а также в простых случаях и пользовательский код для остальных.

...