Sto usando asp.net mvc con il framework di entità e sto iniziando a imparare DDD. Sto lavorando a un progetto che contiene sondaggi. Ecco il mio modello di dominio:Qual è il modo migliore per costruire il modello di visualizzazione?
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; }
}
ho bisogno di diverse parti di inchieste per diversi punti di vista così ho creato diverse 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; }
}
Quale sarebbe il modo migliore per costruire la mia architettura, se voglio che il mio repository di sondaggi per ottenere le informazioni necessarie per un modello di vista appropriato?
solusions diverse che vedo:
Repository potrebbe tornare IQueryable per SurveyService e il servizio potrebbe tornare la vista del modello appropriete, ma ho esitato che facendo questo è giusto perché credo modelli vista dovrebbero essere creati in UI , non il livello di servizio.
Creare tre classi appropriate nel mio livello dominio. Ma ora il dominio dipenderà dalla rappresentazione e con ogni nuova vista dovrebbe essere creata una nuova classe di dominio.
Recupera l'oggetto dominio completo e associa solo le proprietà necessarie per una vista particolare. Questo non va bene perché nel mio esempio le domande sono necessarie solo in una rappresentazione e potrebbe essere una raccolta pesante.
utilizza viste parziali –
ViewModels deve vivere nell'interfaccia utente e popolarsi nel controller. I layer DAL e Domain non dovrebbero averne conoscenza –
@DaveA Userò le viste parziali, ma la domanda non è su di esso. Sto chiedendo il modo ottimale per costruire i miei modelli di vista. –