前 言
三年来我一直在努力使“grok”(本意是透彻理解,指研究者对某事物理解得非常透彻以至于已经完全融入其研究领域了)这个单词进入每个人的主流词汇中(可以参考我先前出版的另外两本书),而当前我正在“透彻理解”的事物之一就是来自微软阵营的LINQ这项新技术。
微软将LINQ称为一项“突破性的创新”,并称此项技术有望“改革开发者处理数据的方式”。同您一样,我对这种允诺也存在一些怀疑,因为过去我们也听到过许多类似的言论,但即使是临时的开发者也会被这类大胆的允诺吸引注意力。
但在此我只想说明的是,对LINQ了解得越多,我就越感到振奋(同时也越对自己不相信LINQ的宣传感到内疚)。并且LINQ带给我的不是一般的振奋,那股兴奋劲儿绝不亚于在十岁的圣诞节早晨醒来时,发现自己正在圣诞树下同海盗分享战利品。
为什么LINQ会有如此大的吸引力?因为LINQ将查询的概念作为C#和Visual Basic中首要的语言结构。由此一来,您就不再需要学习多种技术来查询多种不同的数据源。在LINQ中,对于XML、SQL数据库、ADO.NET DataSets以及其他数据源都将使用同一种查询语法进行查询操作。
LINQ简化了查询的编写。如果您在使用C#或Visual Basic,就可以立刻着手编写LINQ查询,因为您最清楚自己需要查询哪些信息。LINQ是一系列内置于Visual Studio 2008中的特性集合,这些特性将强大的查询能力直接集成到Visual Basic和C#的语法中。这同时也会带来其他好处,如IntelliSense、编译时类型检查和调试支持等。有了这些,编写查询是不是变得很简单?
0.1 本书读者对象
本书面向的是打算学习LINQ,并希望学习如何借助LINQ改进其应用程序的开发人员。同样,本书也面向那些已经花了少量时间来了解LINQ,或已经使用LINQ进行了一些试验性的开发,欲对LINQ进行进一步研究以期使用LINQ完善其应用程序的开发人员。
对Visual Studio和C#语言的了解将有助于本书的阅读和对书中示例的理解,但这并不是必需的前提。对SQL Server和T-SQL的了解也同样如此。
0.2 本书主要内容
第I部分对LINQ和Visual Studio 2008进行了概述,并简单介绍了许多新的和现有的支持LINQ的语言特性。接下来讨论了LINQ查询和LINQ标准查询操作符。
● 第1章概述LINQ并解释了需要使用LINQ的理由,并对其他LINQ 提供程序(LINQ Provider)进行了概要介绍。
● 第2章首先简单回顾了Visual Studio的历史,之后较为详细地介绍了Visual Studio 2008以及.NET Framework中许多有助于理解LINQ的语言特性。
● 第3章详细介绍了LINQ,包括其全部的概念以及编写LINQ查询时要用到的语法。
● 第4章详细讨论了LINQ标准查询操作符。
第II部分详细介绍LINQ to XML。在对其进行概述之后,详细讨论了如何在C#和Visual Basic中使用LINQ to XML进行编程,并讨论了如何使用LINQ to XML处理其他数据模型。
● 第5章概述LINQ to XML,讨论了LINQ to XML中的多个概念,并把LINQ to XML同其他XML技术进行了比较。
● 第6章详述了使用LINQ to XML编程时需要理解的概念、技术和编程的基本原则。
● 第7章把LINQ to XML同其他LINQ数据模型(如LINQ to SQL)进行了比较。
● 第8章讨论了一些高级的LINQ to XML编程主题,如函数构造以及如何处理事件。
● 第9章重点介绍如何在Visual Basic .NET中进行LINQ to XML开发。
第III部分主要介绍LINQ to SQL,首先同样也是对其进行概述,然后详细介绍LINQ to SQL查询、高级查询概念、LINQ to Entity和LINQ to DataSet。这一部分也介绍了LINQ提供的用来将多个LINQ to SQL函数自动化的可视化工具。
● 第10章概述LINQ to SQL及其对应的对象模型,并讨论了基于属性的映射,最后简单介绍了关系数据模型的一些基本概念。
● 第11章讨论LINQ to SQL查询及其相关概念,如何使用DataContext类和实体对象,以及如何使用LINQ to SQL处理数据。
● 第12章介绍数据库关系以及LINQ查询的执行等概念。
● 第13章详述LINQ to SQL实体的多个概念,如跟踪变化、如何使用事务等。
● 第14章重点介绍如何使用LINQ to DataSet查询ADO.NET DataSet中的内容,以及如何使用LINQ to DataSet进行数据绑定。
● 第15章介绍LINQ to SQL中的一些高级概念,如多层操作和Object-Relational Designer(对象关系设计器,O/R Designer)。
第IV部分是附录,提供了一个案例分析,并介绍了两种将在Visual Studio 2008后续版本中实现的LINQ技术:LINQ to XSD和LINQ to the ADO.NET Entity Framework。但毫无疑问,这两种新技术将会对市场带来很大的影响。
● 附录A完整地介绍了如何使用LINQ以及相关的LINQ提供程序来构建应用程序。
● 附录B讨论了LINQ to the ADO.NET Entity Framework以及相关的对象,并讨论了Entity Data Model Generator(实体数据模型产生器)工具。
● 附录C介绍了正在测试中的LINQ to XSD技术,它将允许您以输入的方式直接处理XML。
0.3 使用本书所需的环境
书中所有的示例需要以下运行环境:
● Visual Studio 2008(Beta 2)
● .NET Framework 3.5(Beta 2)
● LINQ to XSD Preview
● ADO.NET Entity Framework Beta 2
● ADO.NET Entity Framework Tools CTP
● SQL Server 2005以及AdventureWorks示例数据库
0.4 源代码
在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点http://www.wrox.com/或www.tupwk.com.cn/downpage上下载。登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有的源代码。
注释:
由于许多图书的标题都很类似,所以按ISBN搜索是最简单的,本书英文版的ISBN是978-0-470-04181-9。
在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。
0.5 勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给wkservice@vip.163.com发电子邮件,我们就会检查您的反馈信息,如果是正确的,我们将在本书的后续版本中采用。
要在网站上找到本书英文版的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
0.6 P2P.WROX.COM
要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于您张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给您传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。
在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:
(1) 进入p2p.wrox.com,单击Register链接。
(2) 阅读使用协议,并单击Agree按钮。
(3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit按钮。
(4) 您会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
注释:
不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。
加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。
关于使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。
