Cenni preliminari su LINQ to DataSetLINQ to DataSet Overview

DataSet È uno dei componenti più diffusi di ADO.NET.The DataSet is one of the more widely used components of ADO.NET. Si tratta di un elemento chiave del modello di programmazione disconnesso su cui si basa ADO.NET e consente di memorizzare in modo esplicito i dati da origini dati diverse.It is a key element of the disconnected programming model that ADO.NET is based on, and it enables you to explicitly cache data from different data sources. Per il livello della presentazione DataSet è strettamente integrato nei controlli GUI per il data binding.For the presentation tier, the DataSet is tightly integrated with GUI controls for data-binding. 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.For the middle-tier, it provides a cache that preserves the relational shape of data, and includes fast simple query and hierarchy navigation services. Una tecnica comune utilizzata per ridurre il numero di richieste in un database consiste nell'utilizzare per DataSet la memorizzazione nella cache nel livello intermedio.A common technique used to lower the number of requests on a database is to use the DataSet for caching in the middle-tier. Si consideri, ad esempio, un'applicazione Web ASP.NET basata sui dati.For example, consider a data-driven ASP.NET Web application. Spesso, una parte significativa dei dati dell'applicazione non viene modificata frequentemente ed è comune a più sessioni o utenti.Often, a significant portion of the application data does not change frequently and is common across sessions or users. 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.This data can be kept in memory on the Web server, which reduces the number of requests against the database and speeds up the user’s interactions. Un altro aspetto utile di DataSet è che consente a un'applicazione di portare subset di dati da una o più origini dati nello spazio dell'applicazione.Another useful aspect of the DataSet is that it allows an application to bring subsets of data from one or more data source into the application space. L'applicazione può quindi modificare i dati in memoria, mantenendo comunque la propria forma relazionale.The application can then manipulate the data in-memory, while retaining its relational shape.

Nonostante l'importanza che lo contraddistingue, DataSet dispone di funzionalità limitate di query.Despite its prominence, the DataSet has limited query capabilities. È possibile usare il metodo Select per il filtro e l'ordinamento e i metodi GetChildRows e GetParentRow per la navigazione all'interno della gerarchia.The Select method can be used for filtering and sorting, and the GetChildRows and GetParentRow methods can be used for hierarchy navigation. Per operazioni più complesse, tuttavia, lo sviluppatore deve scrivere una query personalizzata.For anything more complex, however, the developer must write a custom query. Le applicazioni risultanti possono quindi essere difficilmente gestibili e caratterizzate da prestazioni inadeguate.This can result in applications that perform poorly and are difficult to maintain.

LINQ to DataSet semplifica e velocizza l'esecuzione di query sui dati memorizzati nella cache DataSet in un oggetto.LINQ to DataSet makes it easier and faster to query over data cached in a DataSet object. Queste query sono espresse nel linguaggio di programmazione stesso, anziché come valori letterali stringa incorporati nel codice dell'applicazione.These queries are expressed in the programming language itself, rather than as string literals embedded in the application code. Gli sviluppatori non devono pertanto imparare un diverso linguaggio di query.This means that developers do not have to learn a separate query language. Inoltre, LINQ to DataSet consente agli sviluppatori di Visual Studio di lavorare in modo più produttivo, perché l'IDE di Visual Studio fornisce il controllo della sintassi in fase di compilazione, LINQLINQla tipizzazione statica e il supporto IntelliSense per.Additionally, LINQ to DataSet enables Visual Studio developers to work more productively, because the Visual Studio IDE provides compile-time syntax checking, static typing, and IntelliSense support for LINQLINQ. LINQ to DataSet può essere utilizzato anche per eseguire query su dati che sono stati consolidati da una o più origini dati.LINQ to DataSet can also be used to query over data that has been consolidated from one or more data sources. In tal modo sono possibili molti scenari in cui è necessario poter rappresentare e gestire i dati con flessibilità.This enables many scenarios that require flexibility in how data is represented and handled. In particolare, questo tipo di modifiche sono richieste nelle applicazioni generiche per la creazione di rapporti, di analisi e di Business Intelligence.In particular, generic reporting, analysis, and business intelligence applications require this method of manipulation.

Esecuzione di query su DataSet con LINQ to DataSetQuerying DataSets Using LINQ to DataSet

Prima di poter iniziare a eseguire query DataSet su un oggetto utilizzando LINQ to DataSet, è necessario DataSetpopolare.Before you can begin querying a DataSet object using LINQ to DataSet, you must populate the DataSet. Esistono diversi modi per caricare i dati in un DataSetoggetto, ad esempio usando DataAdapter la classe o LINQ to SQL.There are several ways to load data into a DataSet, such as using the DataAdapter class or LINQ to SQL. Dopo che i dati sono stati caricati in DataSet un oggetto, è possibile iniziare a eseguire una query su di esso.After the data has been loaded into a DataSet object, you can begin to query it. La formulazione di query con LINQ to DataSet è simile LINQ (Language-Integrated Query)Language-Integrated Query (LINQ) all'utilizzo LINQLINQdi su altre origini dati abilitate.Formulating queries using LINQ to DataSet is similar to using LINQ (Language-Integrated Query)Language-Integrated Query (LINQ) against other LINQLINQ-enabled data sources. LINQLINQè possibile eseguire query su singole tabelle in un DataSet oggetto o su più di una tabella utilizzando gli Join operatori GroupJoin di query standard e.queries can be performed against single tables in a DataSet or against more than one table by using the Join and GroupJoin standard query operators.

LINQLINQle query sono supportate per DataSet gli oggetti tipizzati e non tipizzati.queries are supported against both typed and untyped DataSet objects. Se si conosce lo schema di DataSet in fase di progettazione dell'applicazione, è consigliabile utilizzare DataSet tipizzati.If the schema of the DataSet is known at application design time, a typed DataSet is recommended. 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.In a typed DataSet, the tables and rows have typed members for each of the columns, which makes queries simpler and more readable.

Oltre agli operatori di query standard implementati in System. Core. dll, LINQ to DataSet aggiunge diverse DataSetestensioni specifiche che semplificano l'esecuzione di query su un set di DataRow oggetti.In addition to the standard query operators implemented in System.Core.dll, LINQ to DataSet adds several DataSet-specific extensions that make it easier to query over a set of DataRow objects. 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.These DataSet-specific extensions include operators for comparing sequences of rows, as well as methods that provide access to the column values of a DataRow.

Applicazioni a più livelli e LINQ to DataSetN-tier Applications and LINQ to DataSet

Le applicazioni dati a più livelli sono applicazioni mirate ai dati separate in più livelli logici.N-tier data applications are data-centric applications that are separated into multiple logical layers (or tiers). Una tipica applicazione a più livelli include un livello di presentazione, un livello intermedio e un livello dati.A typical N-tier application includes a presentation tier, a middle tier, and a data tier. La separazione dei componenti dell'applicazione in livelli aumenta la gestibilità e la manutenibilità dell'applicazione,Separating application components into separate tiers increases the maintainability and scalability of the application. Per altre informazioni sulle applicazioni dati a più livelli, vedere usare i set di dati nelle applicazioni a più livelli.For more information about N-tier data applications, see Work with datasets in n-tier applications.

Nelle applicazioni a più livelli DataSet viene spesso usato nel livello intermedio per memorizzare nella cache le informazioni per un'applicazione Web.In N-tier applications, the DataSet is often used in the middle-tier to cache information for a Web application. La funzionalità di query LINQ to DataSet viene implementata tramite i metodi di estensione ed estende il DataSetADO.NET 2,0 esistente.The LINQ to DataSet querying functionality is implemented through extension methods and extends the existing ADO.NET 2.0 DataSet.

Vedere ancheSee also