最近开始对linq做一些前瞻性的研究,为以后的开发作技术准备,所以,总结了一系列的linq方面的东西。当然了,主要内容来自于msdn,加上别人的文章,以及一小部分个人见解。
1. 概述:
Language-Integrated Query (LINQ) 定义了一组可以在 .NET Framework 3.0 编程语言中使用的通用标准查询运算符。 使用这些标准查询运算符可以投影、筛选和遍历内存中的集合或数据库中的表。请注意,LINQ 查询使用编程语言本身进行表示,而不表示为应用程序代码中嵌入的字符串。 这是在 .NET Framework 的早期版本中编写多数应用程序方式的重大更改。 使用编程语言中编写查询具有多项重要优势。它可以简化查询,不必使用单独的查询语言。 并且,如果您使用 Visual Studio 2008 IDE,LINQ 还允许您利用编译时检查、静态类型和 IntelliSense。
在 .NETFramework 中,数据访问的各个方面都集成了 LINQ,包括 DataSet 断开连接式编程模型和现有的 SQL Server 数据库架构。
下面的关系图概述了 LINQto ADO.NET 如何关联到高级编程语言、其他LINQ 技术和启用 LINQ 的数据源。
.gif)
1.1 LINQ to SQL 对象模型
在 LINQ to SQL 中,用开发人员所用的编程语言表示的对象模型映射到关系数据库的数据模型。然后就会按照对象模型来执行对数据的操作。
在这种情况下,您无需向数据库发出数据库命令(例如,INSERT),而是在对象模型中更改值和执行方法。当您需要查询数据库或向其发送更改时,LINQ to SQL 会将您的请求转换成正确的 SQL 命令,然后将这些命令发送到数据库。
.png)
1.2 LINQ to SQL 优势的概述
在Linq To Sql推出之前,我们只是把sql语句形成一个string,然后,通过ado.net传给sql server,返回结果集.这里的缺陷就是,如果你sql语句写的有问题,只有到运行时才知道.而且并不所有的人都懂数据库的。Linq To SQl 在一切围绕数据的项目内都可以使用。特别是在项目中缺少sql server方面的专家时,Linq To SQl的强大的功能可以帮我们快速的完成项目。Linq To SQl的推出,是让大家从烦琐的技术细节中解脱出来,更加关注项目的逻辑。LinqTo Sql的出现,大大降低了数据库应用程序开发的门楷,它实质是事先为你构架了数据访问层,势必将加快数据库应用程序的开发进度。Linq To Sql解放了众多程序员,让他们的把更多的精力放到业务逻辑以及code上,而不是数据库。对于初学者来讲,Linq To Sql可以让他们迅速进入数据库应用程序开发领域,节约了培训成本。
Linq To SQl 的实现,是在ado.net和c#2.0的基础上的。它通过自动翻译sql语句,并把结果集创建成对象并返回。这里我们可以看出,发送到SqlServer端的sql语句是Linq To Sql自动生成的。这对不懂sql的人来说,无疑是个福音。
第二,Linq To Sql语句是在编译期间就做检查的。而不是运行时检查。这样,那里出了问题,可以及时更改,而不是到了运行时才发现问题。
第三,Linq To Sql是针对对象操作的,更符合今天的oo呼声。
对比NHibernate的优势:
第一, 影射代码自动生成。VS2008提供了SqlMetal和OR Designer两个工具来完成此步骤。而在NHibernate中,你不得不自己手工写。
第二, 影射代码有更多的选择. NHibernate只能把数据库的信息配置在一个xml中,而Linq To Sql有两种方式,一个是放到xml中,我们称为Externl Mapping, 再一种就是以Attribute的形式,存在于各个property中。

浙公网安备 33010602011771号