• 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
    本文版权归作者所有,欢迎转载请注明出处,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    JSP前三章测试改错
    实现文件上传
    Url和Uri的区别
    四套读写文件方案
    C++第一课
    数据聚合架构模式
    高并发怎么解决?
    为什么做不了软件架构师
    完整版go-mysql-elasticsearch安装步骤
    安装GO
  • 原文地址:https://www.cnblogs.com/5207/p/1602606.html
Copyright © 2020-2023  润新知