Prima di introdurre il DataSet tipizzato è giusto dare un rapido sguardo alla tecnologia a cui esso appartiene...
ADO.NET
ADO.Net o ActiveX Data Objects è un modello di accesso relazionale ai dati per le applicazioni basate su Microsoft .NET. Può essere usato per accedere alle fonti di dati per le quali esiste uno specifico .NET Provider. ADO.NET è a volte considerato un'evoluzione della tecnologia ADO, è da notare che i cambiamenti maggiori sono evidenti con la versione 2.0.
Al contrario del suo predecessore, ADO.
NET, si concentra principalmente sui recordset disconnessi, ovvero i DataSet.
ADO.NET è composto da due componenti fondamentali il Data Provider (di solito anche chiamato Managed Provider, che mantiene la connessione con la sorgente dati fisica) e, come già accennato in precedenza, il DataSet (contenitore di dati su cui si deve lavorare). Entrambi i componenti possono comunicare con i Data Consumers, ovvero gli utilizzatori dei loro servizi, come, ad esempio una WinForm o una WebForm.

Il Data Provider è specifico per ogni fonte dati, anche se in realtà tutte queste fonti contengono gli stessi oggetti, i quali si differenziano per il nome e per alcune proprietà e metodi.
ES. (SqlConnection,SqlCommand, OleDbConnection, OleDbCommand ... etc)
Il componente DataSet non è altro che la rappresentazione dei dati contenuti in una repository, esso può essere concepito come una copia in memoria della sorgente dati fisica con tutte le tabelle e le relazioni esistenti, è importante capire che il DataSet non è assolutamente collegato direttamente alla sorgente dati, e che non conosce la provenienza dei dati. Per questo motivo si dice che il DataSet lavora in modalità disconnessa. La sua struttura è la stessa del database relazionale.

In ADO.Net sono supportati due tipi di DataSet, tipizzato e non tipizzato.
Un DataSet tipizzato è un DataSet che definisce un preciso schema con le sue tabelle e le colonne al loro interno esposte come proprietà di oggetti, potendole referenziare con il proprio nome, ciò permette una più facile manipolazione del DataSet. Uno dei vantaggi più importanti di un DataSet tipizzato proviene dal fatto che la validazione dei valore dei dati viene fatta in fase di compilazione, facilitando e riducendo l’impiego del DataBase.
Nonostante tali vantaggi, non sempre è possibile utilizzare DataSet tipizzati, infatti nel caso in cui non siano note a priori la struttura e le dimensioni del DataSet, risulta molto più conveniente crearne uno non tipizzato, in quanto rigenerare un DataSet tipizzato comporterebbe un inutile overhead.
Il DataSet è composto da due oggetti importanti : il DataTable Collection e il Data Relation Collection.
Il DataTable Collection può contenere gli oggetti DataTable, i quali sono composti sono composti, a loro volta, da tre Collections:
- Columns : sono le colonne della tabella presente sul Data Base.
- Row : sono le righe o i record presenti nella tabella del Data Base.
- Constraint : sono i vincoli relativi alle colonne della tabella. ADO.Net accetta due tipi di vincoli, i ForeignKeyConstraints utili a mantenere l’integrità relazionale e UniqueConstraints utili per mantenere l’integrità dei dati, evitando l’immissione di duplicati.
Anche se i DataTable sono spesso utilizzati come parte dei DataSet, possono essere creati in maniera indipendente a run-time, questi DataTable sono utili per configurarli prima di aggiungerli ad un DataSet o per appoggiare dati per dei controlli associati.
Il Data Relation Collection contiene oggetti Data Relations che servono a navigare tra le tabelle, ovvero partendo da una certa riga di una tabella si arriva ad una o più righe di altre tabelle che sono appunto legate a quella di partenza tramite una relazione.