LINQ para visão geral do DataSet
Este DataSet é um dos componentes mais amplamente utilizados do ADO.NET. É um elemento-chave do modelo de programação desconectado no qual ADO.NET se baseia e permite explicitamente armazenar dados em cache de diferentes fontes de dados. Para a camada de apresentação, DataSet é fortemente integrado aos controles de GUI para associação de dados. Para a camada intermediária, ele fornece um cache que preserva a forma relacional dos dados e inclui serviços rápidos de navegação de hierarquia e consulta simples. Uma técnica comum usada para reduzir o número de solicitações em um banco de dados é usar o DataSet para armazenar em cache na camada intermediária. Por exemplo, considere um aplicativo Web ASP.NET controlado por dados. Geralmente, uma parte significativa de dados do aplicativo não muda com frequência e é comum em sessões ou usuários. Esses dados podem ser mantidos na memória no servidor Web, reduzindo o número de solicitações no banco de dados e acelerando as interações do usuário. Outro aspecto útil do DataSet é que ele permite que um aplicativo traga subconjuntos de dados de uma ou mais fontes de dados para o espaço do aplicativo. O aplicativo pode manipular os dados na memória, mantendo sua forma relacional.
Apesar de sua importância, o DataSet limitou os recursos de consulta. O método Select pode ser usado para filtrar e classificar, e os métodos GetChildRows e GetParentRow podem ser usados para navegação a hierarquia. Para algo mais complexo, no entanto, o desenvolvedor precisa escrever uma consulta personalizada. Isso pode resultar em aplicativos com baixo desempenho e de difícil manutenção.
O LINQ to DataSet torna mais fácil e rápido consultar dados armazenados em cache em um objeto DataSet. Essas consultas são expressas na própria linguagem de programação, e não como os literais de cadeia de caracteres inseridos no código do aplicativo. Isso significa que os desenvolvedores não precisam aprender uma linguagem de consulta separada. Além disso, o LINQ to DataSet permite que os desenvolvedores do Visual Studio funcionem de modo mais produtivo, pois o IDE do Visual Studio fornece verificação de sintaxe em tempo de compilação, digitação estática e suporte do IntelliSense para LINQ. O LINQ to DataSet também pode ser usado para efetuar consultas a dados que foram consolidados de uma ou mais fontes de dados. Isso habilita vários cenários que exigem flexibilidade na maneira como dados são representados e tratados. Em particular, os aplicativos genéricos de relatório, análise e business intelligence requerem esse método de manipulação.
Consultando DataSets usando o LINQ to DataSet
Para começar a consultar um objeto DataSet usando LINQ to DataSet, preencha o DataSet. Há várias maneiras de carregar dados em um DataSet, como usar a classe DataAdapter ou o LINQ to SQL. Após carregar os dados em um objeto DataSet, você pode começar a consultá-lo. A formulação de consultas usando o LINQ to DataSet é semelhante ao uso da LINQ (consulta integrada à linguagem) em relação a outras fontes de dados habilitadas para LINQ. As consultas do LINQ podem ser executadas com relação a tabelas únicas em um DataSet ou com relação a mais de uma tabela usando os operadores de consulta padrão Join e GroupJoin.
Há suporte para consultas LINQ com relação a objetos tipados e não tipados DataSet. Se o esquema do DataSet for conhecido no tempo de design do aplicativo, recomendamos um DataSet tipado. Em um DataSet tipado, as tabelas e linhas têm membros para cada uma das colunas, o que torna as consultas mais simples e legíveis.
Além dos operadores de consulta padrão implementados no System.Core.dll, o LINQ to DataSet adiciona várias extensões específicas de DataSet que facilitam a consulta em um conjunto de objetos DataRow. Essas extensões específicas de DataSet incluem operadores para comparar sequências de linhas, bem como métodos que fornecem acesso aos valores de coluna de DataRow.
Aplicativos de n camadas e LINQ to DataSet
Aplicativos de dados de n camadas são aplicativos centrados em dados que são separados em várias camadas lógicas (ou camadas). Um aplicativo de n camadas típico inclui uma camada de apresentação, uma camada intermediária e uma camada de dados. Dividir componentes do aplicativo em camadas separadas aumenta a facilidade de manutenção e a escalabilidade do aplicativo. Para mais informações sobre aplicativos de dados de N camadas, confira Trabalhar com conjuntos de dados em aplicativos de n camadas.
Em aplicativos de n camadas, o DataSet costuma ser usado na camada intermediária para armazenar em cache informações para um aplicativo Web. A funcionalidade de consulta do LINQ to DataSet é implementada por meio de métodos de extensão e estende o DataSet do ADO.NET 2.0.