zoukankan      html  css  js  c++  java
  • Linq to entities 学习笔记

    Linq to  entities ---提供语言集成查询支持用于在概念模型中定义的实体类型。

    首先可以根据http://msdn.microsoft.com/en-us/data/jj206878该网页的learn去设置连接数据、从一个现有的数据库进行逆向工程的模型。

    如何从数据库查询呢?通过以下简单的语句我们可以做到

    using (var data = new ITshowEntities()) //连接数据
    {

       var notice =

             from  变量 in 数据库.表名 where 表名.列名 = ? //条件语句

             select 变量;//返回的是一个表 

             select 变量.列名;//返回的是一个列

        Repeater1.DataSource = notice; //绑定数据到repeater  或者直接就可以  Repeater1.DataSource = data.表名 即可

        Repeater1.DataBind();

    }

    但是这正常是可以实现绑定数据库的功能 但是却出现报错:

    后来发现原因是因为我装的vs是12版本的,它默认entities是5.0版本,而若是在vs10版本的话就没有问题,因为10版默认是entities是4.0版本

    解决这个的办法就是对这个数据进行处理:

    Repeater1.DataSource = notice.ToList(); //绑定数据到repeater  或者直接就可以  Repeater1.DataSource = data.表名.ToList() 即可

        Repeater1.DataBind();

    如果是多个条件查询的可以有两种方式:

    1.运用关系连接符号 &&  ||

    例:where 表名.列名 = ? && 表名.列名 = ?

    2.调用两次where

    例:where(条件).where(条件)

    有没有发现其实 和  C#查询语句差不多呢 

    如何删除数据库里的数据呢?主要是调用Remove(需要删掉的数据)函数 当然 先前应该查到我们需要的数据 .First()返回的是我们查到满足的数据的第一条

    var deldata = from Notice in db.notices //找到删除的数据
    where Notice.id == id  //条件
    select Notice; 
    deldata.First(); //返回符合的第一条数据
    db.notices.Remove(deldata.First()); //删除数据
    db.SaveChanges();  
    Response.Write(@"<script language='javascript'>alert('删除成功!'); //跳出提示框
    window.location.href='manage.aspx'</script>");//跳转到指定页面

    当然仍然可以用另一种方式实现,也就是说只要三行代码我们即可实现删除了

    notice delnotice = db.notices.Where(p => p.id == id).First();  //找到需要删除的数据
    db.notices.Remove(delnotice);
    db.SaveChanges()

    同理修改数据库里的数据也需要先查到需要修改的数据 ,然后再

    表名.列名 == (你需要改的数据);

    例如

    notice updatenotice = db.notices.Where(p => p.id == id1).First();   //找到需要删除的数据 
    updatenotice.title = TextBox1.Text;
    updatenotice.writer = TextBox2.Text;
    db.SaveChanges();

    那么添加呢:添加不需要再查数据 只用先生成新的存储空间 表名 起的名字 = new 表名(); 然后用表名.列名 == 写入的数据 再调用ADD()函数即可

    notice newnotice = new notice();  //生成新的数据
    newnotice.title = TextBox1.Text;  //写入数据
    newnotice.writer = TextBox2.Text; //写入数据
    db.notices.Add(newnotice);
    db.SaveChanges();

    大家有没有发现除了查询数据 ,增加删除修改数据的最后都需要调用SaveChanges();

    存储数据的操作

    那么如何实现用linq to entites 分页呢?

    就需要 调用 skip()take()函数,skip((page-1)*pagesize)这个函数的意思就是查询的时候跳过前面多少条数据

    take(pagesize)的意思则是你一页显示多少条。可以写一个函数来进行分页查询:

    public void select(int page,int pagesize) //分页查询
    {
    using (var db = new ITshowEntities())
    {
    var data = from Notice in db.notices
    orderby Notice.date 
    select Notice;
    Label1.Text = Math.Ceiling(data.Count()/pagesize).ToString(); //向上取
    Repeater1.DataSource = data.ToList().Skip((page-1)*pagesize).Take(pagesize);//每页显示2行   (分页核心)
    Repeater1.DataBind();
    }

    }

  • 相关阅读:
    hadoop 环境配置
    批量生成不同尺寸的图片
    如何生成publish windows app 用到的 pfx 文件
    MVC项目用Windsor注入
    UWP textbox 只能输入数字
    power shell upload file to azure storage
    Checkbox can't checked
    安装部署 Goaccess
    阿里云OSS的Bucket容量大小采集
    1. Nagios和 NagiosQL安装及配置
  • 原文地址:https://www.cnblogs.com/wo-yao-chi-rou/p/3344626.html
Copyright © 2011-2022 走看看