LINQ to DataSet简介及概念

开发 后端
本文介绍了LINQ to DataSet的基本概念。使用 LINQ to DataSet 可以更快更容易地查询在 DataSet 对象中缓存的数据。

使用 LINQ to DataSet 可以更快更容易地查询在 DataSet 对象中缓存的数据。具体而言,通过使开发人员能够使用编程语言本身而不是通过使用单独的查询语言来编写查询,LINQ to DataSet 可以简化查询。对于现在可以在其查询中利用 Visual Studio 所提供的编译时语法检查、静态类型和 IntelliSense 支持的 Visual Studio 开发人员,这特别有用。

LINQ to DataSet 也可用于查询从一个或多个数据源合并的数据。这可以使许多需要灵活表示和处理数据的方案(例如查询本地聚合的数据和 Web 应用程序中的中间层缓存)能够实现。具体地说,一般报告、分析和业务智能应用程序将需要这种操作方法。

LINQ to DataSet 功能主要通过 DataRowExtensions 和 DataTableExtensions 类中的扩展方法公开。LINQ to DataSet 基于并使用现有的 ADO.NET 2.0 体系结构生成,在应用程序代码中不能替换 ADO.NET 2.0。现有的 ADO.NET 2.0 代码将继续在 LINQ to DataSet 应用程序中有效。下图阐释了 LINQ to DataSet 与 ADO.NET 2.0 和数据存储区的关系。

LINQ to DataSet 与 ADO.NET 2.0 和数据存储区的关系 

LINQ to DataSet概念

DataSet 是更为广泛使用的 ADO.NET 组件之一。 它是 ADO.NET 所基于的断开连接式编程模型的关键元素,使用它可以显式缓存不同数据源中的数据。 在表示层上, DataSet 与 GUI 控件紧密集成,以进行数据绑定。 在中间层上,它提供保留数据关系形状的缓存并包括快速简单查询和层次结构导航服务。 用于减少对数据库的请求数的常用技术是使用 DataSet 以便在中间层进行缓存。 例如,考虑数据驱动的 ASP.NET Web 应用程序。 通常,应用程序的绝大部分数据不会经常更改,属于会话之间或用户之间的公共数据。 此数据可以保存在 Web 服务器的内存中,这会减少对数据库的请求数并加速用户的交互。 DataSet 的另一个有用特征是允许应用程序将数据子集从一个或多个数据源导入应用程序空间。 然后,应用程序可以在内存中操作这些数据,同时保留其关系形状。

DataSet 虽然具有突出的优点,但其查询功能也存在限制。 Select 方法可用于筛选和排序, GetChildRows 和 GetParentRow 方法可用于层次结构导航。 但对于更复杂的情况,开发人员必须编写自定义查询。 这会使应用程序性能低下并且难以维护。

使用 LINQ to DataSet 可以更快更容易地查询在 DataSet 对象中缓存的数据。 这些查询用编程语言本身表示,而不表示为嵌入在应用程序代码中的字符串。 这意味着开发人员不必学习单独的查询语言。 此外,LINQ to DataSet 可使 Visual Studio 开发人员的工作效率更高,因为 Visual Studio IDE 提供编译时语法检查、静态类型化和对 LINQ 的 IntelliSense 支持。 LINQ to DataSet 也可用于查询从一个或多个数据源合并的数据。 这可以使许多需要灵活表示和处理数据的方案能够实现。 具体地说,一般报告、分析和业务智能应用程序将需要这种操作方法。

使用 LINQ to DataSet 查询数据集

只有在填充 DataSet 后,您才能开始使用 LINQ to DataSet 来查询 DataSet 对象。 向 DataSet 中加载数据有多种方法,如使用 DataAdapter 类或 LINQ to SQL。 将数据加载到 DataSet 对象后,可以开始查询数据。 使用 LINQ to DataSet 来表述查询类似于对其他启用 LINQ 的数据源使用语言集成查询 (LINQ)。LINQ 查询可以对 DataSet 中的单个表执行,也可以通过使用 Join 和 GroupJoin 标准查询运算符对多个表执行。

支持对类型化和非类型化 DataSet 对象执行 LINQ 查询。 如果在应用程序设计时已知 DataSet 的架构,则建议使用类型化 DataSet。 在类型化 DataSet 中,表和行对每个列都具有类型化成员,从而使查询更简单并且更具可读性。

除了 System.Core.dll 中实现的标准查询运算符外,LINQ to DataSet 还添加了多种 DataSet 特定扩展,从而可以更容易地查询一组 DataRow 对象。 这些 DataSet 特定扩展包括用于比较行序列的运算符以及用于访问 DataRow 的列值的方法。

N 层应用程序和 LINQ to DataSet

N 层数据应用程序是以数据为中心的应用程序,分为多个逻辑层(或层)。 典型的 N 层应用程序包括一个表示层、一个中间层和一个数据层。 将应用程序组件分离到不同的层可提高应用程序的可维护性和可伸缩性。 有关 N 层数据应用程序的更多信息,请参见 N 层数据应用程序。

在 N 层应用程序中, DataSet 通常用于中间层以缓存 Web 应用程序的信息。 LINQ to DataSet 查询功能通过扩展方法实现,并扩展现有的 ADO.NET 2.0 DataSet。

下面的关系图演示 LINQ to DataSet 如何与 DataSet 相关并适应 N 层应用程序:

LINQ to DataSet 如何与 DataSet 相关并适应 N 层应用程序 

【编辑推荐】

  1. LINQ和ADO.NET技术概述
  2. 什么是ADO.NET:数据源的连接枢纽
  3. 浅谈如何更好的打开和关闭ADO.NET连接池
  4. ADO.NET中SQL Server数据库连接池
  5. ADO.NET中的多数据表操作读取
责任编辑:yangsai 来源: MSDN
相关推荐

2009-09-08 17:27:18

LINQ to Dat

2009-09-15 13:59:18

LINQ to Dat

2009-09-08 17:57:54

LINQ to Dat

2009-08-27 10:14:04

LINQ基础概念

2009-09-08 09:37:03

LINQ重要组成部分

2010-06-23 16:35:50

Linux Bash

2009-08-25 17:49:07

C#入门

2010-04-22 11:47:58

集群负载均衡

2009-06-30 14:08:00

Hibernate缓存

2009-06-10 18:19:09

Android平台简史Android平台简介

2011-08-31 10:12:26

MTK手机平台

2009-08-27 13:56:03

IEnumerable

2010-06-12 10:48:45

统一建模语言UML

2009-09-17 13:54:26

LINQ to XML

2022-09-02 08:33:23

ZooKeeper分布式

2009-03-30 10:17:33

JBoss工具包JBossEclipse

2017-08-18 14:01:44

大数据dataWrangle

2009-06-26 16:19:32

Hibernate实现

2009-06-12 14:40:38

Hibernate AHibernate接口

2011-03-29 09:30:12

Cacti
点赞
收藏

51CTO技术栈公众号