Linq to SQL

        一,DataContext类

                 DataContext类是LINQ to SQL框架的主入口点。在我们使用LINQ TO SQL进行进行数据库连接时,我们一般是先建立LINQ TO SQL类,如图:

         

         这个类就是继承DataContext类,当我们把表拖入设计视图后,与数据库关联的那些东西会自动生成。

               之后,我们在使用的时候,要先实例化一个这样的类,在进行对数据库的访问时,都通过实例化的类进行操作。

                

          二,分页示例

                  

                   如下:在分页中,我们只需用我们实例化好的LinqDB对象,之后通过它的属性访问表,加上一点儿Linq基本方法,so easy就完成了分页。

 protected void Page_Load(object sender, EventArgs e)
    {
        //判断是否回发
        if (!Page.IsPostBack)
        {
            BinderToGridView(1,2);  //默认显示第一页,每页2条数据
        }
    }

    /// <summary>
    /// 通过linq技术实现分页数据的提取
    /// </summary>
    /// <param name="pageSize">要显示的第几页数据</param>
    private void BinderToGridView(int pageIndex,int pageSize) //要显示第几页的数据,每页显示多少条
    {

        //数据的基本显示--------下拉页数
        //获取dataContext---获取映射文件---当我们队linqDB进行对象操作时候,自动生成相应的SQL语句
        //DataContext:数据相关上下文类,非常重要呀!!!!

        /**************************************************************/
        /***************DataContext类是LINQ to SQL框架的主入口点*/
        /**************************************************************/

        LinQDBDataContext linqDB = new LinQDBDataContext();   //定义数据上下文类

        //以前我们的分页有两种方式
        //数据量大的时候选择SQL语句的方式分页
        //数据量不大的时候我们选择PageDataSource实现分页

        //var会在执行时自动判断类型,比Object好点儿
        var result = linqDB.User; 

        //获取总页数
        int pageTotal = (result.Count() + pageSize - 1) / pageSize;//比如:有6条数据,每页显示两条,则一共是3页;有7条数据,每页两条,一共是4页。。。。。自己想想吧。。

        //显示页数
        this.DropDownList1.DataSource = System.Linq.Enumerable.Range(1, pageTotal).ToList<int>();  //Range是生成指定范围的整数序列

        //表格中显示数据要实现分页处理---跳过(pageindex-1)*pagesize条记录,然后提取pagesize条记录
        this.GridView1.DataSource = result.Skip((pageIndex - 1) * pageSize).Take(pageSize); // skip  & take....这里用上了吧~~·

        this.DataBind();  //数据绑定

    }

    //选择了哪一页就将此页数据显示处理:此处autoPostBack应当设置为true属性,让它回发会服务器,如果未设置,则不响应;
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
                //TextBox1.Text = this.DropDownList1.SelectedItem.ToString();//测试使用

        BinderToGridView(int.Parse(this.DropDownList1.SelectedItem.ToString().Trim()),2); //显示选中页

    }

    

      三,注意问题

 

            在做一个用户注册的例子中,出现了一个这样的问题:

       

     

                猜测原因:可能是因为数据库中没有主见,造成实体到数据库的映射失败,我们可以手动为数据库中的表添加主键,或者在设计视图上,选择这个实体的某个属性作为主键。

               

        

               

时间: 2025-01-10 15:47:32

Linq to SQL的相关文章

SOA数据访问:使用LINQ To SQL和实体框架实现灵活的数据访问

本文配套源码 本文使用以下技术: LINQ to SQL.ADO.NET实体框架和SOA 目录 创建数据访问层 持久化各个对象 跨服务边界跟踪更改 配置客户端 总结 迄今为止,Microsoft 已面向开发人员发布了两种旨在减少关系数据领域和面向对象的编程之间 的阻抗失谐的产品:LINQ to SQL 和 ADO.NET 实体框架.借助其中任何一种产品,您不必编写大部分探 测代码,即可实现对象持久性.但是,将这些对象关系映射 (ORM) 技术应用到面向服务的应用程序体系 结构为应用程序开发人员带

Linq to SQL对象的增删改

你的程序里,是否到处充斥着这种代码: db.Customers.InsertOnSubmit(customer); db.SubmitChange(); 如果某一天,因为 Customers 表的数据库巨增,需要把它拆成两个表,你是否会胆寒???当然,对于查询,我们可以通过视图来解决.对于插入,或者更新呢?据说,现在的数据库在某些情况下,可以对视图进行数据的更新.插入.但是我们要考虑的是不可以的情况.是不是得每个地方都改呀?对于一个大型的项目,这种改动是很可怕的,某个地方少改了,就糟糕了.不过,

Linq to SQL对象的标识

很多朋友都向我提过,希望我写一下关于Linq to SQL 或者 VS 插件方面的文章.尽管市面上有很多 Linq to SQL 的书籍,但是都是介绍怎么用,缺乏深度.关于 VS 插件方面的书籍也是很显浅,按书籍做出来的东西,只能是学生级别的东西,根本拿不出手.他们觉得我有这个能力写好. 从技术能力的角度来说,的确是不存在什么问题,但是,要把一门技术讲精讲透,是花很时间的事情.自己付出了很多,如果不能得到读者的认同,那这个专题写下去也没什么意义了.这个专题不是教你怎么使用Linq to SQL,

测试运行: 使用LINQ测试SQL存储过程

对访问和操作后端 SQL Server 数据库的程序进行测试十分常见.在此类情况中,应用程序基本都是通过使用 SQL 存储过程来与后端数据进行交互的.此时,可将存储过程看作待测试系统的辅助方法:因此也必须像系统中的任何其他模块一样测试它们. 尽管在测试 SQL 存储过程时可使用的方法有很多,但我发现使用 LINQ 可极大地简化测试自动化.在本月的专栏中,我将向您展示如何使用 LINQ(尤其是使用 LINQ to SQL 提供程序)来测试 SQL 存储过程.我将假定您的 C# 和 SQL 技能属于

比较LINQ to SQL Diagram 和Entity Data Model

LINQ to SQL Diagram(DBML)和Entity Data Model(EDMX)都是.Net Framework v3.5 引入的新特性.相信有很多人不清楚它们之间的差异,这里简要分析比较.下面以Northwind 范例数据库进行说明: LINQ to SQL 对象关系图(Object Relational Diagram) Entity Data Model (EDM) 实体数据模型

学Linq to sql(十):分层构架的例子

项目介绍 这节将要把<学Linq to sql (三):增删改>中留言簿的例子修改为使用WCF的多层构架.我们将会建立以下项目: l A,网站项目 WebSite:留言簿表现层 l B,类库项目 Contract:定义数据访问服务的契约 l C,类库项目 Service:定义数据访问服务 l D,类库项目Entity:留言簿实体 l E,控制台项目Host:承载数据访问服务 项目之间的引用如下: l A引用B和D: l B引用D和System.ServiceModel程序集 l C引用B.D.

学Linq to sql(三):增、删、改

示例数据库 字段名 字段类型 允许空 字段说明 ID uniqueidentifier   表主键字段 UserName varchar(50)   留言用户名 PostTime datetime   留言时间 Message varchar(400) √ 留言内容 IsReplied bit   留言是否回复 Reply varchar(400) √ 留言管理员回复 在数据库中创建一个名为GuestBook的数据库,在里面创建一个tbGuestBook的表,结构如上表. 生成实体类 右键点击网

学Linq to sql(一):预备知识

什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml .Linq to objects.Linq to dataset.Linq to entities等组成了强大的LINQ. 要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍. 隐含类型局部变量 var age = 26; var

Linq to SQL加注Data Annotation在Asp.Net MVC2中的应用

一.写作前提 最近正在做一个Asp.Net MVC2的Project,用到了Linq to SQL,但是对于如何在MVC2中使用 Linq to SQL 生成的强类型加注Data Annotation,我们都知道在MVC2中我们可以定义自己的Model,然后给Model 加Data Annotation,从而在View中可以实现完美的Client Validation(这些Data Annotation也我们也可 以去自己定义).但是对于Linq to SQL 生成的强类型,我们有两个问题,第一

LINQ to SQL异步查询

异步操作是提高Web应用程序吞吐量的重要手段,关于这方面的话题已经在前 文<正确使用异步操作>中解释过了.对于大多数互联网应用来说,性能瓶颈数 据库访问.换句话说,一个请求在数据库操作上所花的时间往往是最多的 --并且占总时间的90%以上.因此,当Web应用程序的吞吐量因为数 据库操作的阻塞而受到影响的话,我们可是尝试使用异步数据库操作来进行优化 . 如果我们使用LINQ to SQL,在默认情况下是无法实现异步查询的,所 有的操作都非常自然--异步是不自然的,因为它把连续的操作拆成 了两段.