Linq to SQL 上篇

前面先后介绍了 Linq to Object 和 Linq to DataSet ,

介绍的也都还比较简单,但是到这里开始介绍 Linq to SQL ,

何为 Linq to SQL ,

简单的说也就是帮你处理 Sql Server 数据库的增删改查的一种技术,

可以看做是 ADO.NET 的替代品,不过在完成上更加方便直接,

也不用像 ADO.NET 一样天天拿着 SqlConnection 这些东西玩来玩去的,

而 Linq to SQL 则是构建于 ADO.NET 之上并且集成了连接池和事务处理的新技术,

实质上,在 Linq to SQL 于 SQL Server 数据库进行操作时,

并不是全部由 Linq to SQL 来完成的,它们两者之间还存在一个桥梁,

也就是“对象模型”,这个而对象模型的功能十分强大,

它要求完成和数据库的沟通,查询等等诸多功能,

对象模型本身和数据库是对应的,实质上是和数据库中的表相对应得,

当程序执行时,Linq to SQL 会转化为对象模型的形式,

然后系统再把在对象模型内的程序执行对数据库的各种操作,

而后数据库便会将查询结果返回给对象模型,

最后这个对象模型又会转回到 Linq to SQL 中。

而对于对象模型的建立,又有三种方式,

其一是自己创建类来打造对象映射模型,

其二则是使用 VS 提供的可视化设计器来自动生成对象映射模型(最主要的方式),

其三是使用命令行的 SQLMetal 工具来生成映射。

下面就先来介绍一下第一种方式,

自定义一个类来充当对象映射模型,通过这个自定义的类,

可以浅要的了解其可视化工具在底层到底是做了怎么一回事,

还是直接看 Demo

using System;

using System.Linq;

using System.Web.UI.WebControls;

using System.Data.Linq;

using System.Web.Configuration;

namespace CSharpLanguage

{

    public partial class Demo__8 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            string conStr = WebConfigurationManager.ConnectionStrings["Demo"].

                ConnectionString;

            //通过传递一个 数据库连接字符串 给 DataContext 对象,

            //这样就可以唯一的确定数据库了

            //也就是确定了数据表所在地

            DataContext studentContext = new DataContext(conStr);

            //然后便是通过 DataContext 对象的 GetTable<Student>()

            //来完成对数据库中数据表的获取,并且获取的类型是和

            //Student 类一一映射的

            //Table 是不能够直接作为 GridView 的数据源的

            Table<Student> student = studentContext.GetTable<Student>();

            var studentResult = from p in student

                                select new

                                {

                                    p.身份证号码,

                                    p.性别,

                                    p.学生姓名

                                };

            GridView1.DataSource = studentResult;

            GridView1.DataBind();

        }

    }

    //必须使用 Table 中的 Name 属性来指明在数据库中

    //将要进行数据操作的数据表的名字

    //事实上,在这里便是建立了对象映射

    //通过这个 Student 类,来映射到数据库中的数据表 "学生"

    //并且通过 "Column" 定义多个字段

    //这些字段都必须和数据表中的字段名称相对应

    //因为只有这样才能够成功的完成从 Linq to SQL

    //到 SQL Server 数据库的一个成功的映射

    [System.Data.Linq.Mapping.Table(Name = "学生")]

    public class Student

    {

        [System.Data.Linq.Mapping.Column]

        public string 身份证号码;

        [System.Data.Linq.Mapping.Column]

        public string 学生姓名;

        [System.Data.Linq.Mapping.Column]

        public bool 性别;

    }

}

结果为

image

从上面的 Demo 可以看出,

Linq to SQL 在运行过程中,是先通过一个对象映射 Student,

来和数据库进行互动,然后再通过这个 Student 将查询到的数据存在对象模型中,

最后通过 Linq 语句来操作这个对象模型,

然后将操作后的结果进行显示即 OK。

                                               2010—2—01

 

posted @ 2010-03-01 13:22  小宝马的爸爸  阅读(450)  评论(0编辑  收藏  举报