Cenni preliminari su LINQ to DataSet
DataSet è uno dei componenti più utilizzati di ADO.NET. Rappresenta un elemento chiave del modello di programmazione disconnesso su cui si basa ADO.NET e consente di memorizzare in modo esplicito nella cache dati di origini dati diverse. Per il livello della presentazione DataSet è strettamente integrato nei controlli GUI per l'associazione dati. Per il livello intermedio fornisce una cache che mantiene la forma relazionale dei dati e include servizi di navigazione all'interno della gerarchia e di query semplici e rapidi. Una tecnica comune utilizzata per ridurre il numero di richieste su un database consiste nell'utilizzare DataSet per la memorizzazione nella cache di livello intermedio. Si consideri ad esempio un'applicazione Web ASP.NET basata sui dati. Spesso, una parte significativa dei dati dell'applicazione non viene modificata frequentemente ed è comune a più sessioni o utenti. Tali dati possono essere mantenuti in memoria sul server Web, in modo da ridurre il numero di richieste al database e velocizzare le interazioni utente. Un altro aspetto utile di DataSet è che consente a un'applicazione di portare nello spazio dell'applicazione subset di dati da una o più origini dati. L'applicazione può quindi modificare i dati in memoria, mantenendo comunque la propria forma relazionale.
Nonostante l'importanza che lo contraddistingue, DataSet dispone di funzionalità limitate di query. È possibile utilizzare il metodo Select per il filtro e l'ordinamento e i metodi GetChildRows e GetParentRow per la navigazione all'interno della gerarchia. Per operazioni più complesse, tuttavia, lo sviluppatore deve scrivere una query personalizzata. Le applicazioni risultanti possono quindi essere difficilmente gestibili e caratterizzate da prestazioni inadeguate.
Con LINQ to DataSet è più facile e veloce eseguire una query su dati memorizzati nella cache di un oggetto DataSet. Queste query sono espresse nel linguaggio di programmazione stesso, anziché come valori letterali stringa incorporati nel codice dell'applicazione. Gli sviluppatori non devono pertanto imparare un diverso linguaggio di query. LINQ to DataSet consente inoltre di incrementare la produttività degli sviluppatori di Visual Studio, poiché l'IDE di Visual Studio fornisce il controllo della sintassi in fase di compilazione, la tipizzazione statica e il supporto IntelliSense per LINQ. LINQ to DataSet può inoltre essere utilizzato per eseguire query su dati che sono stati consolidati da una o più origini dati. In tal modo sono possibili molti scenari in cui è necessario poter rappresentare e gestire i dati con flessibilità. In particolare, questo tipo di modifiche sono richieste nelle applicazioni generiche per la creazione di report, di analisi e di Business Intelligence.
Esecuzione di query su DataSet con LINQ to DataSet
Prima di poter eseguire query su un oggetto DataSet con LINQ to DataSet, è necessario popolare DataSet. È possibile caricare dati in un oggetto DataSet in diversi modi, ad esempio utilizzando la classe DataAdapter o LINQ to SQL. È possibile iniziare a eseguire query su un oggetto DataSet dopo avervi caricato i dati. La formulazione di query con LINQ to DataSet è simile all'utilizzo di LINQ (Language-Integrated Query) su altre origini dati con supporto LINQ. È possibile eseguire query LINQ su singole tabelle di un oggetto DataSet o su più di una tabella utilizzando gli operatori di query standard Join e GroupJoin.
Sono supportate query LINQ su oggetti DataSet tipizzati e non tipizzati. Se si conosce lo schema di DataSet in fase di progettazione dell'applicazione, è consigliabile utilizzare DataSet tipizzati. In un DataSet tipizzato, per ciascuna colonna delle tabelle e delle righe sono disponibili membri tipizzati, pertanto le query risultano più semplici e più leggibili.
Oltre agli operatori di query standard implementati in System.Core.dll, LINQ to DataSet aggiunge diverse estensioni specifiche di DataSet che semplificano l'esecuzione di query su un set di oggetti DataRow. Le estensioni specifiche di DataSet includono operatori per il confronto di sequenze di righe, nonché metodi che forniscono accesso ai valori di colonna di un oggetto DataRow.
Applicazioni a più livelli e LINQ to DataSet
Le applicazioni dati a più livelli sono applicazioni mirate ai dati separate in più livelli logici. Una tipica applicazione a più livelli include un livello di presentazione, un livello intermedio e un livello dati. La separazione dei componenti dell'applicazione in livelli aumenta la gestibilità e la manutenibilità dell'applicazione, Per ulteriori informazioni sulle applicazioni a più livelli, vedere Utilizzo dei dataset nelle applicazioni a più livelli.
Nelle applicazioni a più livelli DataSet viene spesso utilizzato nel livello intermedio per memorizzare nella cache le informazioni per un'applicazione Web. La funzionalità di query di LINQ to DataSet viene implementata tramite metodi di estensione e consente di estendere l'oggetto DataSet esistente di ADO.NET 2.0 .
Nel diagramma seguente viene illustrato in che modo LINQ to DataSet si correla a DataSet e si inserisce in un'applicazione a più livelli.
Vedere anche
Concetti
Esecuzione di query su DataSet (LINQ to DataSet)