手把手教你用好LINQ to SQL(1)

来源:百度文库 编辑:神马文学网 时间:2024/04/27 16:00:47
  • 手把手教你用好LINQ to SQL(1)

  • http://developer.51cto.com  2009-04-22 09:17  张洋  博客园  我要评论(0)
    作者写下这篇文章的主要目的不是“一口吃成个胖子”让大家一次就学会LINQ to SQL。而是从不同的方面帮助大家正确理解,所以这里提到的快速的含义是提高效率,而不是单纯为了学习的速度。

    最近接连遇到几个朋友问我同一个问题,就是关于.NET平台上ORM框架的选择。我想在这个讲求 效率的时代,谁也不想手写SQL或存储过程去访问数据库了。大家都知道,在Java平台上,ORM 这一块基本是Hibernate的天下。当然,相对轻量级的iBatis也有不错的表现。

    不过谈到.NET平台,ORM框架似乎相对混乱了点。很多朋友问我的时候,往往会这样问: NHibernate、NBear和Castle该选择哪个?而当我反问:为什么不适用微软自带的Linq to SQL 呢?对方经常会迷茫和不解。

    我觉得这是个很奇怪的现象。依照我个人的实践,我认为当需要快速构建一个中小型项目时 ,Linq to SQL是一个很好的选择。你至少有以下理由可以选择它:

    i. 它是微软自己的产品,和.NET平台有着天生的适应性。如果你使用.NET Framework3.5和 VS2008开发环境,它本身就集成在里面了,同时VS2008对于Linq to SQL给予了诸多方便的支持 。使用它,你不仅在开发和部署时不用考虑第三方库,更可以尽情享受VS2008带来的种种方便 。

    ii. 上手十分容易,使用十分轻松,通常,你不需要编写一行代码,也不用写任何XML配置 ,完全通过可视化拖拽就能完成ORM层的构建。

    iii. 功能丰富,使用便捷。当轻松构建好ORM层后,你就可以更轻松的操纵数据库了。Linq to SQL提供了丰富的功能,完全可以满足日常数据访问的需求。使用方法也非常简单、灵活。

    有这么好的理由,我真想不通为什么那么多人不愿去选择它。我想来想去,也许有两个重要 原因,一是把LINQ和Linq to SQL混为一谈了,二是受前段时间“LINQ已死”的误导,觉得微软 已经抛弃Linq to SQL了。关于这两点,我就不细说了,简略澄清一下:

    首先,LINQ是从.NET Framework3.0开始,.NET平台上引入的一种新式语言特性,狭义一点 ,你可以讲它理解成一种新式语法,主要是针对迭代数据操作的,所以,也许LINQ叫做“数据 迭代引擎(Data Iterative Engine)”更合适,之所以不着样命名,我想微软可能不愿意让自 己产品的简写为“DIE”吧。:-)而Linq to SQL是LINQ在数据库访问方面的一个应用框架,完全 是两码事。

    其次,关于微软会不会放弃Linq to SQL,客观说,可能会,因为微软下一步主推的ORM解决 方案是Entity Framework。不过这并不妨碍你学习使用Linq to SQL,原因如下:第一,考虑到 兼容性问题,微软绝对不会把Linq to SQL从.NET Framework中拿掉的,所以你不用怕现在用 Linq to SQL写的程序以后不能运行了。第二,即使微软不更新Linq to SQL了,但它现在的功 能,已经足够满足我们日常需要了,相比重量级的Entity Framework,如果你只是做一个中小 型项目,并且很注重开发效率和学习曲线,为什么不选择可爱的Linq to SQL呢?

    好的,上面废话说了不少,下面正式开始吧。本文不是一篇关于Linq to SQL的大百科,写 本文的目的,是引导大家快速上手Linq to SQL,所以不可能面面俱到去讲解Linq to SQL。不 过根据80-20定律,学会了本文的内容,基本就可以应付80%的工作了。另外,延续我一贯的风 格,本文将通过案例的方式帮大家上手Linq to SQL。案例是一个“公告发布程序”。下面我们 开始!

    Step1:建立数据库

    在使用Linq to SQL前,我们要将相应的数据库建好。在这个Demo中,使用的数据 库是SQL Server Express 2005。

    我们首先建立一个叫的数据库MyBulletin,及两个数据表:Category和Bulletin,分别表示 公告的分类和公告,建立方法不再赘述。至于两个表的具体字段请参看图1。

    图1、数据表结构

    其中Category和Bulletin存在一个一对多的关联,表示一个分类下可以有多条公告。

    Step2:建立Linq to SQL Classes文件

    数据建好后,我们需要建立Linq to SQL Classes文件。这种文件是Linq to SQL框架的主要 文件,后面自动生成的实体类和ORM代码都存在于这个文件中。

    我们打开VS2008,新建一个C# Class Labrary工程,名称为LinqToSqlDemo.Orm,建好后在 工程上单击右键,选择“Add”->“New Item”,在文件类型中选择“Linq to SQL Classes ”,文件名命名为“DataClasses.dbml”,如图2所示。

    图2、新建Linq to SQL Classes文件