Как правило, у вас будет одна комплексная модель домена для базы данных. Вы можете использовать (изменить / добавить / удалить / и т. Д.) Модель домена в вашем слое обслуживания или в контроллере, если это небольшое приложение.
Однако для ваших представлений вы можете использовать объекты презентации, чтобы облегчить обслуживание представлений. Их иногда также называют DTO или объектами модели представления. По сути, вы создаете объект, который содержит все данные из модели, необходимые для заполнения представления.
Например:
Ваша модель может включать в себя:
public class Car()
{
public string Model;
}
public class Driver()
{
public string Name;
}
Вы хотите, чтобы вид выводил имя и модель автомобиля, и вам необходимо было бы передать объектам модели Car и Driver вид.
Вместо того, чтобы отправлять два объекта модели непосредственно из контроллера в представление, вы можете создать объект, содержащий только те данные, которые вам нужны:
public class CarAndDriverViewModel()
{
public string CarMake;
public string DriverName;
}
Вы должны заполнить этот объект из данных домена и передать его представлению. И мнение будет:
model.DriverName + ": " + model.CarMake
Теперь вам не нужно беспокоиться о проблемах с отложенной загрузкой или сложной логике представления, чтобы справиться с особенностями модели. Создание этих объектов модели представления требует больше усилий, но они действительно помогают поддерживать чистоту представления и предоставляют простой способ форматирования перед отправкой данных в представление.
Существуют проекты и соглашения, которые можно использовать для автоматизации создания моделей представлений, если вы хотите их изучить. AutoMapper является примером.