Насколько я понимаю, доменные модели - это классы, которые описывают только данные (совокупные корни). Они являются POCO и не ссылаются на внешние библиотеки (ничего особенного).
С другой стороны, модели представлений - это классы, которые содержат объекты модели предметной области, а также все специфичные для интерфейса объекты, такие как SelectList
. ViewModel включает в себя using System.Web.Mvc;
.
Репозиторий извлекает данные из базы данных и передает их нам через объекты модели предметной области. Какой механик или устройство создает объекты модели представления, заполняя их из базы данных? Будет ли фабрика иметь доступ к базе данных? Вы бы добавили в репозиторий определенные классы, такие как System.Web.Mvc? Что-то еще?
Например, если у вас есть раскрывающийся список городов, вы бы ссылались на объект SelectList в корне вашего объекта View Model, прямо рядом с вашей ссылкой DomainModel:
public class CustomerForm {
public CustomerAddress address {get;set;}
public SelectList cities {get;set;}
}
Города должны исходить из базы данных и быть в форме объекта списка выбора. Мы надеемся, что вы не создадите специальный метод Repository для извлечения только отдельных городов, а затем создадите избыточный второй объект SelectList только для того, чтобы у вас были правильные типы данных.