Linq to SQL 上篇

本文详细介绍了LinqtoSQL的概念及工作原理,解释了它是如何作为ADO.NET的替代方案简化数据库操作。文章通过实例演示了如何自定义类来实现对象映射模型,从而更好地理解LinqtoSQL与数据库之间的交互过程。

前面先后介绍了 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

 

转载于:https://www.cnblogs.com/BoyXiao/archive/2010/03/01/1675644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值