本文向大家介绍LINQ ADO.NET,可能好多人还不了解LINQ ADO.NET,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。
为什么需要LINQ ADO.NET?
面向对象的编程语言已经成为企业应用开发的重要工具,LINQ ADO.NET对关系数据提供了一种方便的接口,但还不是一种面向对象的方法。例如,下面的伪代码:
- User u = new User(); //代表user表的一个User类
- u.LoginName = "net_lover" //设置一个LoginName标识
- u.Load(); .//加载用户信息
- u.Title = "【CSDN】"; //将Title修改为【CSDN】
- u.Update(); //将修改的数据更新到数据库。
这段伪代码说明了管理数据的一种面向对象的方法,对开发人员来说,看不到查询或SQL语句。你只需关心的只是做什么,而无需关心怎么做。这种将面向对象和关系数据结合在一起的方法叫做对象关系映射(ORM)模型,这样的方法简化了枯燥的数据操作,简洁明了。
关于ORM,在Java世界里有很多框架,但在.NET Framework里还比较少,NHibernate就是Microsoft .NET平台下ORM的实现,它的目的是将开发人员从大量的关系数据持久化相关的编程中解放出来。目前,NHibernate的稳定版本是 NHibernate 1.2.1,于2007年11月份发布,加入了Hibernate 3中的更多功能,并且支持 .NET 2.0,存储过程,泛型和可为空类型。NHibernate 2.0目前正在开发中。毕竟NHibernate属于开源的代码,不是微软自己的东西,而且它处理的数据源也有限。VS 2005中NHibernate的插件下载地址:http://sourceforge.net/projects/nhibernateaddin。
尽管微软在Dynamics 3.0应用服务器中嵌入了ORM功能,并且在LINQ ADO.NET 3.0中将广泛支持此功能,但是还仍然没有将这种编程模型提供给.NET开发人员。LINQ ADO.NET中数据的操作采用的是Command或者 DataAdapter对象来操作关系数据库,但需要自己写的代码很多,并且需要自己写SQL语句。
.NET也提供了处理XML和非关系数据源,但是我们必须了解其他的方法来查询信息,比如XPath或者XQuery。
现在,可以编程管理的数据可能来自不同的数据域,如数组、对象关系图、XML文档、数据库、文本文件、注册表、电子邮件消息、简单对象访问协议(SOAP)信息内容、Microsoft Office Excel文件等等很多。每种数据域都有自己特定的访问模型,例如,当查询数据库时,通常使用SQL,当遍历XML数据时,使用Document Object Model(DOM)或者XPath、XQuery,当遇到数组是采用遍历的方法,对于对象关系图,则需要自己创建算法,对于Excel文件,电子邮件消息或者Microsoft Windows注册表,要访问他们,则需要使用特定的应用程序编程接口(API)。到最后,访问不同的数据源就要使用不同的编程模型。
将多种数据访问技术统一到一个全面的模型也曾出现过,例如:开放数据库互联(ODBC)提供者允许开发人员以一种类似SQL的语言通过关系模型访问数据。在某些时候,数据以层次或者图形模型来表示更加符合数据的本质含义。另外,如果数据模型没有与编程语言结合在一起,就可能需要编程人员自己管理不同的类型体系。所有这些差别在数据和代码之间产生一种“阻抗失谐”。LINQ就是解决这些问题的技术,它提供统一的访问和管理数据的方法,并且不是采取“一刀切” 的模型来实现。LINQ在这些数据模型之间均衡操作直接的共同特性,而不是在他们之间将不同的结构变成统一。
【编辑推荐】