• 利用LinQ技术和lambd表达式进行增删改查


    数据库访问技术:

      ADO.net

      EF框架

      LinQ

    LinQ是一种高集成化的数据库访问技术,他将数据库中的表映射成程序中的类

      数据库的表名变成类名

      数据库的列名变成字段名/属性名

    所有的操作都是通过LinQ自动生成的一个上下文对象来进行操作的,这个对象名是LinQ的名字+"DataContext" ,一个数据库对应一个LinQ

    1、创建LinQ

      在项目上右键,添加一个LinQ to SQL

      然后点击服务器资源管理器,选择小插头样式的连接到数据库

      正确填写需要连接的数据库信息,点击确定,然后在左边就可以看到数据库结构,将需要的表直接拖动到界面上即可

    2、去除数据访问类的简便开发方式

      使用LinQ时,可以不写数据访问类,直接在程序用调用,这样既省时间,也节省内存

      使用方法:using(实例化上下文对象){}

    using (Data0928DataContext con = new Data0928DataContext())
                {
                    Repeater1.DataSource = con.Users.ToList();
                    Repeater1.DataBind();
                }

    3、查询、条件查询

      普通查询:查询全部只需一句代码

    con.Users.Tolist()

      条件查询:需要使用Lambda表达式

      注意:不管结果有几条数据,返回的都是集合,使用FirstOrDefault取第一个值,并且如果为空不会报错,会返回null

    Users u = con.Users.Where(r => r.ids == ids).FirstOrDefault();

    4、删除

      删除方法需要一个对象,需要先通过条件查询查出此对象才能进行删除,并且需要SubmitChanges方法才是正式执行方法

    con.Users.DeleteOnSubmit(con.Users.Where(r => r.ids == ids).FirstOrDefault());
    con.SubmitChanges();

    5、修改

      修改不需要想ADO.net中那样需要写很长的字符串,只需要查出需要修改的对象,对这个对象的属性直接修改,修改完毕执行SubmitChanges方法提交即可

    复制代码
    Users u = con.Users.Where(r => r.UserName ==         username.Text).FirstOrDefault();
                    u.PassWord = password.Text;
                    u.NickName = nickname.Text;
                    if (RadioButton1.Checked)
                        u.Sex = true;
                    else
                        u.Sex = false;
                    u.Birthday = Convert.ToDateTime(birthday.Text);
                    u.Nation = DropDownList1.SelectedValue;
                    u.Class = DropDownList2.SelectedValue;
                    try
                    {
                        con.SubmitChanges();
                        Response.Redirect("Index.aspx");
                    }
                    catch {
                        Label1.Text = "修改失败!";
                    }        
    复制代码

    6、属性扩展

      VS允许用户对LinQ生成的实体类进行扩展,只需要创建一个跟实体类相同名的类,写上partial,即可在此类里面写自己需要的属性。

      直接在LinQ生成的文件中写也有效,但是如果对LinQ执行任何修改,哪怕只是拖动一下界面的表位置,也会导致代码重新生成,这样自己写进去的属性扩展就会消失,所以只能通过新建一个同名partial类进行添加

    复制代码
    public partial class Users
    {
        public string SexStr
        {
            get
            {
                string end = "<无数据>";
                if (this._Sex != null)
                {
                    end = Convert.ToBoolean(this._Sex) ? "images/1.png" : "images/0.png";
                }
                return end;
            }
        }
        public string NationName
        {
            get
            {
                return Nation1.NationName;
            }
        }
    
        public string ClassName
        {
            get
            {
                return Class1.ClassName;
            }
        }
    }
    复制代码
  • 相关阅读:
    朴英敏: 用crash工具分析Linux内核死锁的一次实战【转】
    ext3,ext4,xfs和btrfs文件系统性能对比【转】
    STM32MP157——Remoteproc和RPMsg【转】
    使用edac工具来检测服务器内存故障.【转】
    面试题-python 什么是生成器(generator)?
    面试题-python 什么是迭代器(Iterator)?
    面试题-python 浅拷贝和深拷贝(copy模块)
    selenium+python自动化104-如何获取隐藏元素text文本
    面试题-websocket 接口如何测试?
    jmeter压测学习47-发soap请求测试webservice接口
  • 原文地址:https://www.cnblogs.com/zhulijun/p/6942196.html
Copyright © 2020-2023  润新知