Nella mia app ASP.NET MVC, ho una pagina di modifica abbastanza complessa che combina un numero di modelli in un'unica vista.ASP.NET MVC - Devo utilizzare il modello di repository per scrivere ViewModels nel database o convertirli prima in Modelli?
Sto utilizzando il modello ViewModel per combinare tutte queste informazioni e presentare un oggetto coesivo alla vista.
Ad esempio, la struttura ViewModel è qualcosa di simile:
CompanyId
CompanyName
List<Employee> Employees
List<ContactMethod> ContactMethods
L'oggetto Employee ha una serie di proprietà di base, e un metodo di contatto preferito.
Nella pagina di modifica, l'utente riceve tutti i dipendenti dell'azienda e ha la possibilità di aggiungere e rimuovere (utilizzando javascript), nonché modificare i dettagli dei dipendenti. L'elenco ContactMethods viene utilizzato per popolare il menu a discesa per ciascun dipendente.
Ho tradotto con successo i miei modelli (letti dal database) in questo ViewModel e di nuovo indietro, quindi dopo una modifica, sono rimasto con un ViewModel che rappresenta lo stato corrente dei dipendenti di quella società.
sto usando un modello Repository per comunicare con il database, quindi la mia domanda è, Devo chiamare direttamente nel CompanyRepository, passando il ViewModel, o dovrei convertire il ViewModel indietro nel modello oggetti prima di utilizzare il repository per scriverli nel database?
In breve, il repository deve conoscere i miei oggetti ViewModel?
Se questo è il caso (e questo va bene), avrei bisogno di creare questi modelli di dipendenti, eliminare tutti i dipendenti esistenti da quella società, quindi aggiungere i nuovi modelli di dipendente ... o ... recuperare tutti i modelli di dipendente dal database e confrontarli prima di aggiungere, rimuovere e modificare, se necessario. Suona bene? – Damovisa
@Damovisa: potresti farlo. Invece, manterrei queste informazioni durante la modifica. Nel tuo ViewModel mantieni tre liste: CreatedEmployees, EditedEmployees, DeletedEmployees. – manu08
@ manu80 - Capisco come potrebbe funzionare, ma potrebbe essere un po 'complicato. L'interfaccia utente dovrebbe cambiare un po 'per tenere conto di queste tre raccolte, anche se è solo il javascript che cambia. – Damovisa