ciao,
concordo con quanto detto da Alex, usare dataset è un metodo "poco corretto" che ci ha dato ms per velocizzarci lo sviluppo di applicazioni.
Non è da odiare, è solo che se stai lavorando ad applicazioni di una certa grandezza e logica, usare dataset tipizzati, è qualcosa di poco produttivo, conviente usare una struttura ad oggetti (Entita) e pensare alla rappresentazione web come un solo modo di visualizzare una serie di entita'.
Per applicazioni piccole e da dover sviluppare velocemente, usare dataset ti aiuta molto, quindi potrebbe essere una scelta corretta.
Quindi SqlDataSource è ottimo se sai che la tua app si attacca a sql e da quel database non cambiera' mai e non hai voglia/bisogno di farti delle logiche dietro, quindi un canale diretto ai dati da portare sulla pagina aspx.
Se invece i dati hanno delle gerarchie, hanno dei valori da maneggiare prima di arrivare al browser, devi metterci in mezzo qualcosa di tuo che faccia questo codice "di business".
Questo strato, sara' una classe, avra' un metodo, che tu chiamerai e ti tornera qualcosa, ovvero un "oggetto" quindi è una "sorgente di oggetti" (ObjectDataSource appunto).
Vedi te qual'e' la strada che piu' ti si addice, pero' io ti posso dire che la mia esperienza ha portato a partire da access/sqldatasource per arrivare ad avere quasi solo ObjectDataSource, che chiama un metodo di una classe mia, che prende i dati dal db (o da altre sorgenti come puo' esser xml o file di testo) e poi mi torna Collection<T>, dove T è una mia classe.
Esempio:
Per il db NorthWind, la classe è "Customer" con le sue proprieta' (come CustomerID etc...) che leggono e scrivono sul db, ma nella pagina web chiamo un metodo di questo tipo:
public stati IEnumerable<Customer> GetCustomers()
{
List<Customer> lista = ....
...
return lista;
}
Ma potevi anche tornare un DataTable, non è un problema, solo che se domani cambi l'implementazione di qualcosa e vai meglio a tornare che ne so, un Array di Customer, della pagina web non cambi niente, se invece hai sqldatasoruce devi cambiare la pagina perche' non ti attacchi piu' a sql ma a qualcosa che ti da sto array...
Se poi usi Linq, hai una facilita' ancora in piu' a lavorare "Slegato dal db", e a modellare di piu' le tue applicazioni...se poi ci aggiungi addirittura Entity Framework di cui ti accennava Alex, beh dataset non saranno piu' nel tuo vocabolario
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo