ciao, l'obiettivo è quello di rendere + performante l'applicazione e il progetto è quello di popolare varie combobox (DisplayMember e ValueMember) da dati provenienti dal database.
Al momento creo un OleDbConnection, un OleDbCommand e OleDbDataReader, ciclo sui dati della select e popolo i combobox, siccome ogni combo deve essere popolata con dati provenienti da diverse tabelle, per ogni combobox cambio il commandtext dell'OleDbCommand rifaccio il ciclo e popolo la combo, questo per ogni combo come detto.
Il tutto funziona, ma vorrei qualcosa di + performante in termini quindi di velocità ma soprattutto vorrei poter lavorare in modo disconnesso. Insomma, lo sò che i dataset in termini di performance non sono proprio adatti, ma forse nel mio caso creare un dataset è opportuno, in quanto vorrei poter archiviare tutto i risultati delle query in memoria e poi fare delle operazioni in modo disconnesso. Per esempio popolare una determinata combobox dalla selezione di una certa item di un'altra combobox. Fare questo con i datareader significa ricollegarsi al database quando seleziono una certa item di una combobox e filtrare il popolamento di un'altra combo secondo il valore selezionato nella prima combo, mentre con i dataset, siccome ho tutto in memoria dovrei poter fare queste operazioni in modo disconnesso.
La domanda è: mi date un consiglio su come progettare il dataset?
Riassumendo: vorrei poter creare una sola volta la rappresentazione tabellare di tutte le select che adesso utilizzo per popolare le combo, disconnettermi e lavorare sull'oggetto disconnesso.. fino a qui tutto teoria, ma nella pratica?

ho anche provato a fare qualcosa, non sò se stò facendo bene, non sò se è questo codice è + performante rispetto ad un codice che utlizza i datareader, ma vorrei trovare il massimo delle performance, visto che mi stò collegando ad un db su un mainframe as400 e per riempire due combo ci mette circa 5 secondi :

codice:
.. connessione .. 

DataSet dsAnaBase = new DataSet(); 
OleDbDataAdapter adpFornitore = new OleDbDataAdapter("SELECT FORCD,FORRASOC FROM DDFORPT",cn); 
OleDbDataAdapter adpGruppo = new OleDbDataAdapter("SELECT XCDEL,XCDTB,XDTAB FROM LIB.ASD00F WHERE XCDTB='GRU'", cn); 


adpFornitore.Fill(dsAnaBase,"tblFornitore"); 
adpGruppo.Fill(dsAnaBase, "tblGruppo"); 

cn.Close(); 

comboFornitore.DataSource = dsAnaBase.Tables["tblFornitore"]; 
comboFornitore.DisplayMember = "FORRASOC".ToUpper().Trim(); 
comboFornitore.ValueMember = "FORCD".Trim(); 
comboFornitore.SelectedIndex = 0; 

comboGruppo.DataSource = dsAnaBase.Tables["tblGruppo"]; 
comboGruppo.DisplayMember = "XDTAB".ToUpper().Trim(); 
comboGruppo.ValueMember = "XCDEL".Trim(); 
comboGruppo.SelectedIndex = 0;
Ciao