本系列,或多或少,直接或间接依赖入门系列知识。但,依然追求独立成章。因本文作者水平有限, 文中错误难免,敬请读者指出并谅解。本系列将会和入门并存。
案例
某君被邀为一超市设计数据库,用来存储数据。该君根据该超市中实际出现的对象,设计了 Customer, Employee,Order, Product等表,用来保存相应的客户,员工,订单,货品等。太好了,该 君很有oo的思想吗。
如果,你被要求用类及对象,来描述该关系型数据,你该如何做呢?在linq推出之前,ADO.NET被用 来做数据访问层。而后,程序员需要自己去编写事务逻辑层中所出现的类。比如,Customer, Employee ,Order, Product等。然后,程序员组装所需的sql语句,通过ADO.NET,将返回的记录,来初始化 Customer等类的对象。在这里,你已经自己动手将Customer表和Customer类关联了起来。从Linq To Sql 的设计来看,它主要是为了解决data!=objects 的问题而产生的。现在,有了Table和Class之间的映射 ,数据和对象之间就可以有一个一一对应的关系了。
在Linq To Sql之前,在java领域有Hibernate,在net领域有NHibernate技术,来实现 object/relational 持久和查询服务。无论是Hibernate还是NHibernate,其配置复杂,上手时间长,已 经不能适应快速开发的需要。而Linq To Sql的推出,恰恰弥补了它们的缺点,彻底降低了程序开发门槛 。
Linq
Linq是Language Integrated Query的缩写。Linq To Sql是linq中的一部分,其与ADO.NET Orcas的 关系入下。
现在linq分三个部分。Linq To Objects,即以前的linq。其主要是针对CLR-Based Objects的查询。 即内存操作。Linq Enabled ADO.NET是针对关系型数据的。这又包含三个部分。Linq To Datasets, Linq To Sql, Linq To Entities. 其中Linq To Sql 是大家所熟悉的部分,即以前的Dlinq. 官方的解 释是,Linq To Datasets, support for ADO.NET Datasets; Linq to SQL, support for SQL Server; Linq to Entities, Support fro Entity Data Model. 记得,以前曾有人问及dlinq与ADO.NET Orcas的 关系,因为它们隶属于不同的队伍开发,其中有重叠的部分。而现在,其功能归结在一起,其重叠部分 已经得到融合。(如果有人是ADO.NET team或熟悉这个的,开辟专栏给我们大家讲一下呀。)最后一部 分叫Linq To XML,即以前的Xlinq. 针对xml格式数据的操作。(还有针对ASP.NET的Blinq, 大声问一下 ,有没有人懂这个呀)