ViewModel è danneggiato da più di un repository?

4

Sto lavorando a un progetto con MVVM. Alcuni ViewModels hanno più di un repository.

  • ViewModels presenta più di un repository non valido?
  • Fornisci il motivo per cui è buono / cattivo.
posta Amir Rezaei 23.02.2011 - 16:10
fonte

1 risposta

3

Buono

Lo scopo di ViewModel è di astrarre dove sono archiviati i dati, in modo che la Vista possa visualizzare i dati in un modo che abbia senso per l'utente, ma non necessariamente i dati che corrispondono al back-end. Se, ad esempio, alcuni dati provengono da una query in SQL e alcuni provengono da un servizio Web per aumentare tali dati, quindi li spingo alla View utilizzando un singolo ViewModel, quindi dico che stai facendo esattamente quello che è stato progettato per . Stai eliminando la complessità dei dati archiviati in più repository per la vista, in modo tale che qualsiasi vista tu decida di utilizzare, hai un ViewModel facile da usare e conciso.

Esempio:

Ho alcuni dati che devo raccogliere e visualizzare:

  1. Una tabella di contatti dal mio database: UserID, FName, LName, Email
  2. Lavori che mi corrispondono provenienti dall'API Indeed Job Search
  3. Il mio CV che proviene dall'API StackApps (desidero visualizzare informazioni di background su ciò che è stato utilizzato per selezionare i lavori tramite Indeed ... come C # o lavori Java).

Riesco a farlo apparire in un ViewModel:

  1. FirstName, LastName, ArrayList di Jobs e ArrayList di termini pertinenti dal mio CV.

Voglio mostrare tutte le informazioni su una singola pagina, quindi il singolo approccio ViewModel mi dà un singolo oggetto che posso visualizzare nella mia vista. Se ho più ViewModels per una singola vista, o provo a fare quell'aggregazione e il calcolo nella vista stessa, allora indebolisco i benefici del modello, e potrei anche tornare a ASP.NET/Silverlight/whatever normale. Se il modello cambia, allora posso cambiare il modo in cui i repository arrivano al ViewModel, ma la vista non interessa (né dovrebbe farlo), perché interessa solo a ViewModel, non da dove provengono i dati.

    
risposta data 23.02.2011 - 16:26
fonte

Leggi altre domande sui tag