张红实 蒋郑
摘 要:本文就数据库查询问题介绍了LINQ技术,剖析了LINQ技术的特点和组成部分,对其中的LINQ to SQL技术应用做了重点阐述。此技术使用类似SQL的语法将查询操作直接引入到NET框架所支持的编程语言中,可查询外部数据源及内存等任何形式数据,操作简单实用,为降低数据库开发门槛,提升开发效率有着积极的意义。
关键词:LINQ;数据库查询;LINQ to SQL
1 引言
传统的数据查询技术繁多且使用复杂,使得开发的难度较高。在这里,笔者发现LINQ技术在进行数据查询时具备很好的语法检查、丰富的元数据、智能感知和静态类型等强类型语言之类的优点,并且能查询内存中的数据而不只是外部数据源。这使我们可以用一种类似SQL语法的代码来查询任何形式的数据,让开发变得简单起来。
2 LINQ技术的特点及组成
LINQ(Language-Integrated Query)是微软于C#3.0推出的.Net平台下的框架产品,提供了固定的编程模型,采用面向对象思维方式使用相同的代码模式来对任何能兼容LINQ的数据进行操作。
LINQ的查询处理包含三个操作:①获取数据源;②创建查询;③执行查询。在LINQ里,查询的执行和查询的构造本身是截然不同的。如果只是创建查询变量,则不会查询数据,只有访问查询变量时才执行查询。这就是LINQ的延迟查询。
LINQ由三部分组成:LINQ to Objects,LINQ to ADO.NET,LINQ to XML.其中LINQ to ADO.NET又细分为三部分:LINQ to SQL,LINQ to Data Sets,LINQ to Entities。
LINQ to Objects用来查询内存中的数据对象集合;LINQ to SQL用来查询SQL Server 200x数据库的表;LINQ to Data Sets用来查询ADO.NET Data Sets,LINQ to XML用来查询XML数据,LINQ to Entities用来查询ADO.NET框架中的业务实体。
3 LINQ to SQL查询
通过使用LINQ to SQL,生成表示数据的.NET Frame work类。这些生成的类直接映射到数据库表、视图、存储过程和用户定义的函数,而不映射到概念数据模型。当应用程序运行时,LINQ to SQL会将对象模型中的语言集成查询转换为SQL后发送到数据库中执行。当数据库返回结果时,LINQ to SQL会将它们转换回编程语言处理的对象。
3.1 LINQ to SQL实体类的映射
该实体类用于对象——关系映射(ORM):①首先准备好数据库对象,然后建立实体类;②使用LINQ to SQL执行Delete操作,用Delete On Submit和Delete All On Submit方法来删除数据;③LINQ to SQL中的Attach和Attach All方法用来在多层结构的程序中更新数据,将实体附加到数据上下文的数据表,而表示界面层用Sub-mit Changes方法来更新数据库。从数据库中检索数据,由于是采用基于表达式树的查询机制,要通过对Queryable类的扩展方法完成,如用where方法来根据条件筛选并返回数据,用Last方法来返回满足条件的最后一条记录等。
3.2 Linq Data Source控件
在Web应用程序中操作数据时,通过使用Linq Data Source控件来自动创建与数据进行交互的命令,简化网页代码。Linq Data Source控件与数据库的数据交互时,不直接连接数据库,而是与数据库和表相关联的实体类交互。Linq Data Source控件与Sql Data Source控件相比有很大的优势,无需设置SQL查詢命令对数据的绑定和操作,Linq Data Source控件将使用LINQ to SQL自动创建,当更新或插入数据时,将Data Field属性与实体类中的属性名进行匹配即可。页面通过数据源Linq Data Source控件和显示数据的Grid View控件就可以实现数据的操作。
4 结束语
数据查询是从一个特定结构的数据源中取出数据。不同结构的数据源很可能会形成不同查询语言,从而导致开发者进行跨数据源的数据操作难度急剧增加。而LINQ则提供固定的编程模型,兼容各种数据格式,使得数据查询难度大大降低。与传统的查询方式相比,LINQ解决了不同数据源之间难以共同引用的问题,无需学习各类查询语言,让程序的可读性、灵活性迅速提高。同时因为查询语句的统一,这就使得程序开发的门槛变低,提高了开发效率,还具有了良好的可重用性和扩展性。
参考文献
[1]胡玉贵.C#下的Linq简介[J].电脑知识与技术(学术交流),2007.
[2]陈娟.基于Frame work3.5的LINQ技术探究[J].微计算机信息,2010.
[3]韩双旺.LINQ数据库访问技术研究[J].自动化与仪器仪表,2011.
[4]舒国军,黄刚.LINQ to SQL技术在Web开发中的应用[J].遵义师范学院学报,2012.
[5]赵志刚.ASP.NET中基于LINQ的数据访问[J].沈阳师范大学学报(自然科学版),2009.
作者简介
张红实(1977—),男,重庆人,重庆工程学院软件开发专业教师,副教授,计算机软件与理论硕士,研究方向:ERP软件开发及相关教学实施与研究。