LinqToSql开发实践之认识LinqToSql

原文: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
本文版权归作者所有,欢迎转载请注明出处,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2009-11-13 16:37  5207  阅读(711)  评论(0编辑  收藏  举报