本书翻译目的为个人学习和知识共享,其版权属原作者所有,如有侵权,请告知本人,本人将立即对发帖采取处理。
允许转载,但转载时请注明本版权声明信息,禁止用于商业用途!
博客园:韩现龙
LINQ调味料
LINQ 是一门涵盖多种数据领域的技术。其中一部分数据领域就包括在LINQ调味料中,微软将其作为.NET 3.5框架的一部分提供给大家,如下图 1-1
每种具体的LINQ调味料都是通过一系列扩展方法来实现的。为了让LINQ能运行在特定的数据领域上,这些扩展方法都提供了数据操作的具体实现。而这些特性是通过引入不同的命名空间来控制的。
更多信息 在C#中,通过using关键字在当前的范围内来引入命名空间,在Visual Basic中该关键字为Imports.
LINQ to Objects
LINQ to Objects的目标是为了操作对象集合,从而使得该集合中的任何一个对象都能和其他对象联系起来而形成有层次的结构或者图。从某些角度看来,一个LINQ查询的默认实现就是LINQ to Objects。只要引入System.Linq这个命名空间,就能够使用LINQ to Objects。
更多信息 在第四章“LINQ语法基础”中,以LINQ to Objects为例,解释了关于LINQ的一些基本概念。
如果你认为LINQ to Objects只能局限于查询用户产生的数据集合,那这种想法是错误的。你可以通过分析列表1—11中的代码,找到为什么上面的看法是错误的原因。从该列表中的代码可以看出,其中有一条LINQ查询作用在从文件系统抽取出来的信息上。首先给定一个特定的目录,然后它所包含的所有文件信息都被读取到内存中,最后通过LINQ查询进行过滤。
LINQ to ADO.NET
LINQ to ADO.NET包括一些不同的LINQ实现。它们主要用来操作相关联的数据集合。LINQ to ADO.NET涵盖了一些其它的技术,这些技术都是针对特定的持久层来进行操作。
LINQ to SQL和LINQ to Entities很相似,它们都能访问在关系数据库中存储的信息,并操作在内存中存储外部数据的实体对象。它们之间主要的区别在于操作的数据抽象层不同。LINQ to SQL是和物理数据库的结构向对应,而LINQ to Entities操作的是概念模型(业务实体),这些概念模型与实际的物理数据结构(数据表)相距甚远。
通过LINQ来访问关系数据有以上几种选择,之所以提供这样几种方式是因为现有的数据访问模型不同。有些机构通过存储过程来实现所有的数据访问,其包括各种类型的数据查询,并不通过动态查询来实现。许多其它的机构仅仅使用存储过程来进行添加、更新或者删除数据,并且动态拼接SELECT语句来查询数据。某些机构把数据库当作一个简单的面向对象的持久化层,但其它的机构将业务逻辑放在数据库中的触发器或存储过程中,也可能两者皆有。LINQ尝试在数据库访问上提供帮助和改进,而不强迫所有开发人员只采用单一的数据模型。
更多信息 使用LINQ to ADO.NET特性取决于包含特定的命名空间。关于LINQ to ADO.NET的实现和相关细节在第五章中有说明。
LINQ to XML
LINQ to XML通过提供一个与以往稍微不同的语法支持来操纵XML数据,包括查询和数据操作。 在Visual Basic 9.0中,对LINQ to XML存在一种特定类型的支持,即在代码中能够直接使用XML文本。该增强的功能使得操作XML数据的代码更加简单化。实际上,在Visual Basic 9.0中,你能够使用如下的查询:
如果按照C# 3.0的语法规则,上面的代码可以写为:
更多信息 在第三章中,有更多关于Visual Basic对XML支持的信息。而关于LINQ to SQL的实现基础在第六章中有更多讨论。
译注:
本篇专用词库:
[1] 持久层: persistence layer
[2] 实体数据模型: Entity Data Model (EDM)
[3] 抽象层: abstraction layer
[4] 物理数据层: physical data layer
[5] XML文本: XML Literals
本篇译者:博客园:紫色阴影
上一篇:微软免费图书《Introducing Microsoft LINQ》翻译-Chapter1:语言集成(CDPlayer译)
下一篇:LINQ的现状与未来