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

      一、新增

        UserInfo user = new UserInfo()
        {
            UserName = "jamsebing",
            UserPass = "123456"
        };
         db.UserInfo.Add(user);

      二、删除之 [Entry].State=Deleted

        var user = new UserInfo()
        {
            UserID = 1, //根据主键删除
            UserName="jamesbing"
        };
        db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Deleted;

        这里指定了UserName没有任何意义,只需填写UserId即可

           删除之 [Attach+Remove]

      var user = new UserInfo()
        {
            UserID = 1 //根据主键删除
        };
        //Attach的实体事先不能已经在内存中,否则上下文会追踪到两个相同键名的实体
        //将对象添加到EF管理容器中 ObjectStateManager
        db.UserInfo.Attach(user);
        ////将对象包装类状态标识为删除
        db.UserInfo.Remove(user);

          删除之 [先查询实体 再删除]

           // 执行了2次sql 效率略低 ,一次查询,一次删除
            var user = (from u in db.UserInfo where u.UserID == 1 select u).FirstOrDefault();
            db.UserInfo.Remove(user);
            db.SaveChanges();

      三、修改整个实体  [Entry].State=Modified

     //手动创建整个修改实体
       var user = new UserInfo()
        {
            UserID = 1,
            UserName = "jamesbing2",
            UserPass = "654321"
        };
        db.Entry<UserInfo>(user).State = System.Data.Entity.EntityState.Modified;

              修改指定字段之 [Attach(entity)]

    var user = new UserInfo()
        {
            UserID = 1,
            UserName = "jamesbing2"
        };
    //State默认值=
    System.Data.EntityState.Unchanged
       var entry=db.UserInfo.Attach(user);

    //设置需要修改的字段

    entry.Property<string>(v => v.UserName).IsModified = true;

              修改指定字段之 [Entry(entity)].State=Unchanged

       var user = new UserInfo()
        {
            UserID = 1,
            UserName = "jamesbing2"
        };
       var entry= db.Entry<UserInfo>(user);
    //如果使用 Attach 就不需要这句 entry.State
    = System.Data.EntityState.Unchanged;
    //设置需要修改的字段 entry.Property
    <string>(v => v.UserName).IsModified = true;
  • 相关阅读:
    PKG_COLLECTION_LHR 存储过程或函数返回集合类型
    【Linux】将Oracle安装目录从根目录下迁移到逻辑卷
    【故障处理】ORA-28040: No matching authentication protocol
    【故障处理】队列等待之enq IV
    【故障处理】告警日志报“ORA-01565 Unable To open Spfile”
    【故障处理】一次RAC故障处理过程
    小麦苗健康检查脚本说明
    【密码】Oracle用户密码系列
    【ASM】ASMSNMP用户已存在
    【故障处理】CRS-1153错误处理
  • 原文地址:https://www.cnblogs.com/gaobing/p/6001031.html
Copyright © 2011-2022 走看看