zoukankan      html  css  js  c++  java
  • EF的增删改查

    创建上下文对象:WordBoradEntities db = new WordBoradEntities();

    添加://1.1创建实体对象

                User uObj = new User()

                {

                    uName = "刘德华",

                    uLoginName = "aaa",

                    uPwd = "asdfasdfasdfsadf",

                    uIsDel = false,

                    uAddtime = DateTime.Now

                };

                //1.2通过EF新增到数据库

                //1.2.1将对象加入到数据上下文 User集合中

                db.Users.Add(uObj);

                //1.2.2调用数据上下文保存方法,将对象存数数据库

                db.SaveChanges();

    查询:List<User> list = db.Users.Where(u => u.uName == "刘德华").ToList();

    连接查询:linq连接查询: from a in db.User join b in db. UsersAddresses  on a.Id equals b.udid

    EF连接查询:IQueryable<UsersAddress> addrs = db.User.Include("UsersAddresses").Where(a => a.Id == 1);

    另一种连接查询:var list=db.User.Join(db. UsersAddresses,c=>c.Id,g=>g.udid,(c,g)=>new{Name=c.Name,GroupName=g.GroupName});

    删除:EF中实现删除有三种方式

    注:版本一、二都是根据主键删除,版本三是根据任意条件到数据库查询然后再根据查询的结果进行删除,实际上版本三也是根据查询出来的结果中的主键进行删除。

    版本一:根据主键删除

    //实例化一个Users对象,并指定Id的值

      Users user = new Users() { Id = 1 };

      //user附加到上下文对象中,并获得EF容器的管理对象

      var entry = db.Entry<User>(user);或者 var entry=db.Entry(user);

      //设置该对象的状态为删除

      entry.State = EntityState.Deleted;

      //保存修改

      db.SaveChanges();

      Console.WriteLine("删除成功!");

    版本二:根据主键删除

          //实例化一个Users对象,并指定Id的值

          Users user = new Users() { Id = 1 };

          //user附加到上下文对象中

          db.Users.Attach(user);

          //删除user对象

          Db.Users.Remove(user);

          //保存修改

          db.SaveChanges();

          Console.WriteLine("删除成功!");

    版本三:根据条件先查询出来然后再删除

    var list= db.Users.Where(u => u.Name ==”张三”)

    if(list!=null&&list.Any())

    {

           Foreach(User item in list)

           {

           db.User.Remove(item);

    }

    }

    db.SaveChanges();

     

    修改:

    1.官方推荐的修改方式(先查询,再修改)

    //Id2Users数据取出

          var user = db.Users.Where(u => u.Id == 2).FirstOrDefault();

          Console.WriteLine("修改之前:" + user.UserName);

          //修改UserName属性

          user.UserName = "222222222222222";

          //保存修改

          db.SaveChanges();

    Console.WriteLine("修改之后:" + user.UserName);

    2.自己优化的修改方式

      //1.创建出一个要修改的对象

      User use = new User() { uId = 8,uName="小白~~~"};

      //2.对象加入 EF容器,并获取当前实体对象状态管理对象

      DbEntityEntry<User> entry = db.Entry<User>(user);

      //3.设置该对象为未被修改过

      entry.State = System.Data.EntityState.Unchanged;

      //4.设置该对象 uName属性修改状态,同时 entry.State 被修改为 Modified 状态

    entry.Property("uName").IsModified = true;

    //5.关闭EF实体合法性检查(如果创建出来的要修改的数据有的字段没有赋值则关闭实体合法性检查,如果所有字段都赋值了则不用关闭EF实体合法性检查)

    db.Configuration.ValidateOnSaveEnabled = false;

      //6.重新保存到数据库 -- ef 上下文根据实体对象的状态,根据 entry.State =Modified 的值生成对应的 update sql 语句.

    db.SaveChanges();

    Console.WriteLine("修改成功:");

  • 相关阅读:
    微信公共服务平台开发(.Net 的实现)5-------解决access_token过期的问题
    微信公共服务平台开发(.Net 的实现)4-------语音识别
    微信公共服务平台开发(.Net 的实现)3-------发送文本消息
    微信公共服务平台开发(.Net 的实现)2-------获得ACCESSTOKEN
    微信公共服务平台开发(.Net 的实现)1-------认证“成为开发者”
    checkboxlist 横向显示,自动换行
    VMware Workstation unrecoverable error: (vmx)虚拟机挂起后无法启动问题
    ASP.NET给DataGrid,Repeater等添加全选批量删除等功能
    redis 优缺点 使用场景
    redis消息队列
  • 原文地址:https://www.cnblogs.com/zhuyuchao/p/5634196.html
Copyright © 2011-2022 走看看