您的位置:首页 > 编程语言 > Qt开发

LinqToSql开发实践之认识LinqToSql

2009-11-13 16:37 239 查看
原文:http://www.mini188.com/showtopic-1286.aspx

一、Linq是什么

Linq何许神也?MSDN中有这么一段话:语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。

突破性的创新,这个称号确实让人一惊,呵呵。LINQ是Language Integrated Query的英文缩写,从这串英文可以看出LINQ是语言,是一种集成的查询语言。目前微软提供的库中已经支持了:Linq To Objects、Linq To Xml、 Linq To DataSets、Linq To Sql以及新近推出的Linq To Entites。

Linq通过定义一套查询操作符结合.NET Freamwork实现了强大的查询功能,为此微软也为Linq新增了相应的命名空间以使开发者能够非常简单的应用LINQ的强大功能。

二、LinqToSql是什么

本文讨论的是LinqToSql,主要是因为在项目中用到了LinqToSql,也体会到了其强大的功能同时也感到了它许多的不足。而LinqToSql又是最贴近于现有的一些关系型数据库软件系统的应用。所以以LinqToSql来学习和掌握LINQ是个不错的选择。

LinqToSQL就是基于关系型数据库的集成查询,用于以对象的形式管理及查询关系型数据库。换言之,可以不写SQL就能实现对数据库的管理及查询,说的有些悬!~~

目前LinqToSql仅支持了微软的SQLServer数据库,也可以说是个半成品,也正是如此在实际开发中会有一些扩展要求,当然,对于一些简单的数据库软件系统LinqToSql还是基本满足要求的。

在LinqToSql中有一个非常重要的成员:DataContext(数据上下文)。这个东东是LinqToSql用于处理数据来来去去的核心,其负责了从Linq查询翻译成SQL语句的过程,并且负责了数据的加载填充。

另一个重要的成员:实体类。在数据库中会存在着数据表、视图、存储过程、函数等等等等,Linq是基于对象查询的,也就是必须是强类型的数据操作。所以LinqToSql必须将这些数据库中的坛坛罐罐都类型化,微软定义了一个dbml文件,用于实现对象与数据库对象的映射,这个映射就是实体类,LinqToSql通过这个映射达到了与数据库之间的交互。当然微软也开发了可视工具,生成实体的时候非常的简单。

三、使用LinqToSql需要什么

想要用LinqToSql开发程序,必备的东西还是要有的:

1、Vs2008(最好是打上Sp1吧)

2、.Net Freamwork3.5(最好是打上Sp1)

3、MSSqlServer(2000/2005/2008)

4、会C#、VB.NET

5、还有看书和实践的能力

要求不高吧,微软的东西相对来说做的还是非常易用,接下举个例子你就写出一个LinqToSql的第一个程序了,让我们开始吧。

四、试试吧

请把各种装备都搞定,再继续下面的步骤,我是用C#写的:

1、建立一个C#Console工程,取名为:OhTestLinq

2、然后向工程中添加新建项,在列表中选择“Linq To Sql 类”,如下图:





至于名称嘛,不改好了,就按默认的来。(平时写程序可不要这习惯。呵呵)

3、在工程中会生成几个新成员,如图:



同时对击这个DataClasses1.dbml,打开后会显示一个页面,在中间会有如下提示:





点击“服务器资源管理器”,建立一个数据库连接,就直接连接到SqlServer的自带数据库“Northwind”。展开连接中的表,然后选中全部的表:



用鼠标拖到dbml中去,数据表就会生成在dbml中了。

4、好了,这样数据库与LinqToSql的映射工作就做好了,数据库链接和上下文类以及实体类的代码都已经自动生成,接下来就可以使用LinqToSql的强大功能来做数据操作了:

打开Program.cs文件,写下面的代码:

class Program

{

static void Main(string[] args)

{

DataClasses1DataContext db = new DataClasses1DataContext();

var customs = from cust in db.Customers

where cust.City == "London"

select cust;

foreach (var u in customs)

{

Console.WriteLine(u.CompanyName);

}

Console.Read();

}

}

这段代码是查询了来自London这个城市的客户,并显示了这些客户的公司名称,按下F5,输入出结果如下:



是不是很简单?这过程中没有写一行SQL语句就实现了数据的查询,但是你会发现有一句代码很像SQL:

var customs = from cust in db.Customers

where cust.City == "London"

select cust;

这就是Linq的查询语法,和SQL很相近,但是又有区别,最特别的是select出现在了最后面。事实上这个写法更贴近于真实的SQL执行过程,这个以后我找机会写文章介绍。

五、结束语

Linq理解后会发现是比较简单易学的,而且其强大的查询能力也会在编写代码过程中大大的提高开发效率,而且从目前一些主流的开发框架中都尽量的减少对SQL的应用,特别是在多层分式系统中,通过Linq的应用可以减少甚至不使用SQL查询语言就可以实现数据库的操作,但是,Linq本身带来的性能及局限性也会制约他的作用,所以如何合理设计并运用Linq才是最最重要的。做为新技术,大部分厂商都在观望,也都期待着这个让程序员眼前一亮的东西有更加成熟的表现,那就让我们除期待以后,也尝试一把吧。

作者:5207

出处:http://www.mini188.com

本文版权归作者所有,欢迎转载请注明出处,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: