LINQ to ADO.NET
语言集成查询 (LINQ) 定义了一组可以在 .NET Framework 3.0 编程语言中使用的通用标准查询运算符。 使用这些标准查询运算符可以投影、筛选和遍历内存中的集合或数据库中的表。 请注意,LINQ 查询使用编程语言本身进行表示,而不表示为应用程序代码中嵌入的字符串。 这是在 .NET Framework 的早期版本中编写多数应用程序方式的重大更改。 使用编程语言中编写查询具有多项重要优势。 它可以简化查询,不必使用单独的查询语言。 并且,如果您使用 Visual Studio 2008 IDE,LINQ 还允许您利用编译时检查、静态类型和 IntelliSense。
在 .NET Framework 中,数据访问的各个方面都集成了 LINQ,包括 DataSet 断开连接式编程模型和现有的 SQL Server 数据库架构。 本节说明 LINQ 的实现 ADO.NET LINQ to ADO.NET。
下面的关系图概述了 LINQ to ADO.NET 如何关联到高级编程语言、其他 LINQ 技术和启用 LINQ 的数据源。
有三种独立的 ADO.NET 语言集成查询 (LINQ) 技术:LINQ to DataSet、LINQ to SQL 和 LINQ to Entities。LINQ to DataSet 提供针对 DataSet 的形式多样的优化查询,LINQ to SQL 使您可以直接查询 SQL Server 数据库架构,而 LINQ to Entities 允许您查询 实体数据模型。
将数据从 SQL 表传输到内存中的对象通常单调乏味并容易出错。由 LINQ to DataSet 和 LINQ to SQL 实现的 LINQ 提供程序可以将源数据转换为基于 IEnumerable 的对象集合。在您查询数据和更新数据时,程序员始终会以 IEnumerable 集合的形式查看这些数据。为编写针对这些集合的查询提供完全的 IntelliSense 支持。
LINQ to DataSet
使用 LINQ to DataSet 可以更快更容易地查询在 DataSet 对象中缓存的数据。具体而言,通过使开发人员能够使用编程语言本身而不是通过使用单独的查询语言来编写查询,LINQ to DataSet 可以简化查询。
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 SQL
在 LINQ to SQL 中,关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型。当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为 SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL 会将它们转换回您可以用您自己的编程语言处理的对象。