Я использую asp.net mvc с инфраструктурой сущности и начинаю изучать DDD. Я работаю над проектом, который содержит обзоры. Вот моя модель предметной области:Каков наилучший способ создания модели просмотра?
public class Survey
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public decimal MinAcceptanceScore { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyQuestion> Questions { get; set; }
public IEnumerable<Prize> Prizes { get; set; }
public IEnumerable<SurveyAttempt> UserAttempts { get; set; }
}
мне нужны разные части изысканий для различных взглядов, так что я создал различные ViewModels:
public class ShortSurveyViewModel
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyAttempt> UserAttempts { get; set; }
}
public class ShortSurveyWithPrizesViewModel
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyAttempt> UserAttempts { get; set; }
public IEnumerable<Prize> Prizes { get; set; }
}
public class SurveyEditViewModel
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public decimal MinAcceptanceScore { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyQuestion> Questions { get; set; }
public IEnumerable<Prize> Prizes { get; set; }
}
Что бы лучший способ построить свою архитектуру, если я хочу, чтобы мои репозиторий для получения информации, необходимой для модели одобрения?
Различные solusions, что я вижу:
Repository может вернуться IQueryable в SurveyService и сервис может вернуть модель представления appropriete, но я стеснялся, что делает это правильно, потому что я думаю, что вид модели должны быть созданы в пользовательском интерфейсе , а не Сервисный уровень.
Создайте три подходящих класса в моем доменном слое. Но теперь домен будет зависеть от представления и при каждом новом представлении должен быть создан новый класс домена.
Получить полный объект домена и отобразить только объекты, необходимые для конкретного вида. Это не хорошо, потому что в моем примере вопросы нужны только в одном представлении, и это может быть тяжелая коллекция.
использование частичных просмотров –
ViewModels должны жить в пользовательском интерфейсе и заселяться в контроллере. Уровни DAL и домена не должны знать о них –
@DaveA Я буду использовать частичные виды, но вопрос не в этом. Я спрашиваю о оптимальном способе построения моделей моего представления. –