1.504 messaggi dal 27 dicembre 2005
Io vorrei approfondire una cosa se possibile.
Sto usando MVC 5 e vorrei un consiglio.
Quando aggiungo l' edmx al proggetto, poi per gestire i dati tra le view come devo fare ?

Mi devo creare un altra classe con gli stessi campi e passare alla view quello , oppure posso usare le classi generate da EF ?

Inoltre se io all view devo passare più model, come devo fare ?

Per esempio se devo passare un oggetto per riempire una form , ma anche vari model per riempire combobox o listbox o altri controlli, come devo fare ?
383 messaggi dal 23 aprile 2007
Lavoro da un'annetto su mvc, per cui prendi la risposta per quel che vale: ad ogni modo, personalmente preferisco avere una classe intermedia che mappa esattamente il mio oggetto di business, e non usare direttamente le classe dell'edmx, che tra le altre cose hanno spesso molte informazioni superflue per le operazione che si vanno ad effetuare.
Questo ti risolve anche il problema dei multi-modelli da passare alla view, puoi inglobarli tutti in un unico oggetto contenitore e usare quest'ultimo per eseguire il bind.

Certamente questa scelta ti sacrifica le interazioni con il db, se usi direttamente oggeti dell'edmx eseguire le CRUD, sarà più semplice(questo lo suppongo, immagino un minor numero di righe di codice), ma, almeno per esperienza sono pochi i casi in cui i dati che servono ad una view sono solo ed esclusivamente quelli di un'unica tabella(penso ad eventuali pagine che gestiscano le "tipologiche" e poco altro).

Altra soluzione per il multi modello è usare oggetti come il ViewBag, ViewData, etc, in cui memorizzare collezioni e simili e leggerle sulla view per eseguire il bind su dropdown etc.

Ma lascio la parola ai più esperti di me XD

Sergio
Modificato da historyX il 26 maggio 2015 09.39 -
1.504 messaggi dal 27 dicembre 2005
Infatti credo che la seconda soluzione sia la migliore, un modello per la view "principale" e tutti gli altri controlli, tipo le select, fare le query sulle action e memorizzare i dati sulla viewbag o viewdata, le quali vengono distrutte al termine della renderizazione della view.

Ovvio che però ad ogni post o get devo rieseguire le query ogni volta.
383 messaggi dal 23 aprile 2007
Per evitare di eseguire le query ogni volta, se sono dati che non cambiano spesso, puoi memorizzarli in sessione o simili e dalla seconda richiesta in poi li leggi da li.

Sergio
1.504 messaggi dal 27 dicembre 2005
L'unica credo si la sessione vero ?

Il viewbag o tempdata se non sbaglio si distruggono una volta renderizzata la pagina.
383 messaggi dal 23 aprile 2007
Se non erro, il tempData ha il metodo Keep che ti permette di mantenere una variabile anche dopo la lettura.

https://msdn.microsoft.com/en-us/library/ee703497(v=vs.118).aspx
383 messaggi dal 23 aprile 2007
mi pare strano, prova a dare un'occhiata qui, ci sono maggiori dettagli: http://stackoverflow.com/a/21254178

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.