ASP.NET MVC - модель представления, модель предметной области и модель данных

Я использую Entity Framework в моем последнем проекте ASP.NET MVC 3. Поскольку это прежде всего БД, структура сущностей генерирует модели БД. На моем сервисном (бизнес) уровне я Scaffold (MvcScaffolding) для генерации сервисных методов, представлений и контроллеров. Строительные леса также генерируют доменные модели. При привязывании этих моделей к представлениям я использую модели представления.

Короче говоря, я использовал три типа моделей. Это нормально? Модели представлений хранятся на уровне представления, доменные модели - на бизнес-уровне, а модели данных - на уровне хранилища.

Пожалуйста, поделись своими мыслями.

2 ответа

Решение

Это звучит хорошо и действительно имеет несколько преимуществ.

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

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

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

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

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

Вы должны создать отдельную модель представления и модель базы данных из-за необходимости иметь возможность воссоздать модель базы данных из базы данных без изменения представлений.

Другие вопросы по тегам