Linq to SQL

时间:2014-11-23 16:04:19   收藏:0   阅读:214


        一,DataContext类


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



          bubuko.com,布布扣


         这个类就是继承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); //显示选中页


       
    }

    


      三,注意问题

 

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


        bubuko.com,布布扣



     

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


                bubuko.com,布布扣





        


               

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!