Già in Visual Studio 2005, è stato aggiunto un designer per la costruzione di strutture di dati tipizzate a partire dalle tabelle del database. Parliamo dei "DataSet tipizzati", che prendono il nome proprio dalla classe DataSet
(namespace System.Data
) che ha lo scopo di rappresentare i dati con un modello tabellare/relazionale.
Nel designer è possibile lavorare con quattro tipi differenti di oggetti:
DataTable
Un oggetto, derivato direttamente dalla classe DataTable
, (sempre namespace System.Data
), in grado di contenere dei dati all'interno di una struttura prestabilita fatta di colonne, chiavi primarie e vincoli. Molto utile per creare facilmente delle rappresentazioni dei dati da utilizzare nelle applicazioni.
TableAdapter
Un oggetto contenente una DataTable
per rappresentare i dati da trattare e un'insieme di query basate proprio su tali dati. Questi oggetti vengono definiti come "classi di Business" e vengono utilizzati da controlli di tipo ObjectDataSource
come fonte di informazioni, con l'aggiunta di tutti i meccanismi di inserimento, aggiornamento e cancellazione dei dati.
Quando si crea un nuovo TableAdapter
, viene chiesta all'utente una query di selezione, la tabella risultante costituisce il materiale per da inserire nella DataTable
. Se la query di selezione e lo schema della tabella coinvolta lo permettono, verranno create in automatico tutte le query CRUD legate appunto alla struttura scelta. Inoltre, l'utente è in grado di aggiungere nuove query, magari con l'utilizzo di parametri, con l'unico vincolo di rispettare la selezione delle colonne descritte dal DataTable
.
Query
È possibile inserire all'interno del DataSet
generale, una o più query, di aggiornamento, inserimento, cancellazione o di selezione (al massimo di una singola riga) che potranno essere utilizzate in maniera indipendentedal resto degli oggetti definiti all'interno del DataSet
padre. Ogni volta che l'utente decide di aggiungere una nuova query infatti, questa verrà associata ad un particolare TableAdapter
, creato in automatico dal designer senza alcun DataTable
di definizione, con il compito di contenere appunto l'insieme di tutti questi tipi di oggetti. Tale TableAdapter
avrà il nome di "QueriesTableAdapter".
Relation
All'interno del DataSet
, le diverse DataTable
possono essere correlate tra loro. Le relazioni nel DataSet
sono simili a quelle tra le tabelle di un database relazionale, con chiavi primarie e chiavi esterne, vincoli di chiavi e vincoli di cancellazione o modifica a cascata. Ogni relazione viene definita rigorosamente tra due colonne di due DataTable
differenti.
Il DataSet designer
L'insieme di tutti questi oggetti, permette all'utente di creare un set di strutture di dati preso direttamente dalle informazioni contenute nel database e di definire specifiche operazioni di selezione, inserimento, modifica o cancellazione, senza dover ogni volta scrivere tutto il codice.
La comodità unica del DataSet Designer di Visual Studio è data dal fatto che semplicemente trascinando una tabella del database, dalla finestra "Server Explorer" all'interno dell'area di contenuto dove è stato aperto il file .xsd, verrà creato in automatico un TableAdapter
con un DataSet
contenente tutte le colonne proprie della tabella e una query iniziale di selezione di tutte le righe presenti all'interno della tabella scelta; inoltre, vengono create in automatico anche le query di inserimento, modifica e cancellazione. Spostando le tabelle scelte dalla finestra "Server Explorer" all'interno del DataSet tipizzato, l'IDE crea in automatico strutture che possiamo utilizzare tramite controlli di tipo ObjectDataSource
e controlli Data-Bound. Il tutto, senza scrivere una riga di codice.
Nota: se stiamo sviluppando un'applicazione Web, i file .xsd
dovranno risiedere nella cartella speciale App_Code
.