14 messaggi dal 24 febbraio 2011
Quando e perché preferire uno e l'altro???

Utilizzo Web Form e VB.Net 4.0

Dovrei salvare in una variabile application il contenuto di una tabella del DB per poi popolare una sola volta una DropDownList e portarmela dietro per tutte le pagine del sito.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
DataTable è una classe pensata per lavorare con i dati di un database relazionale. Contiene al suo interno una collezione di righe e colonne che richiamano da vicino quelle di una tabella di un database. Ciascuna riga può gestire fino a tre versioni dei dati, una cosa utile quando vuoi tracciare i cambiamenti prima di persisterli nel db, oppure serializzare l'oggetto in attesa di recuperarlo in un secondo momento per continuare a lavorarci.
Inoltre, funziona in sinergia con le altre classi di ADO.NET e possiede la logica che le consente di designare delle chiavi primarie, vincoli e relazioni con altre tabelle.
E' molto facile riempire un DataTable con dati provenienti dal database.

Collection(Of T) è una classe snella, è un semplice insieme di oggetti dello stesso tipo. Ha pochi membri che ti consentono un minimo di funzionalità base per aggiungere, rimuovere e accedere ai suoi elementi.
Il tipo di elemento lo decidi tu. Può trattarsi di una semplice stringa o, nel tuo caso, di un tipo complesso che possieda tante proprietà pubbliche quanti sono i campi della tabella nel database. Popolare una Collection(Of T) a partire dai dati che ottieni dal DataReader richiederà del codice per il mapping, cioè dovrai copiare manualmente ogni campo del DataReader nella rispettiva proprietà di T.

Il DataTable sembrerebbe la scelta più logica nel tuo caso, dato che devi semplicemente popolare una DropDownList.

Tuttavia, anziché usare una variabile Application, considera l'ipotesi di mettere la DropDownList (e il codice che serve a popolarla) in uno User Control e di aggiungere la direttiva OutputCache.
In questo modo, non solo eviti di accedere al database, ma anche di rigenerare l'HTML della DropDownList ad ogni richiesta. Asp.Net noterà che lo Usercontrol è in cache e ne servirà immediatamente l'output senza doverlo rielaborare.

ciao

Enjoy learning and just keep making

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.