EF 的增删改查

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yikeshu19900128/article/details/42755415

                        EF的操作

1.添加操作

方法一:

            var db = new Context();  //数据库上下文
            User user = new User(); //实例化一个类
            ......   //给user赋值
            db.Set<User>().Attach(user);
            db.Entry<User>(user).State = EntityState.Added;
            db.SaveChanges();

方法二:

            var db = new Context();  //实例化上下文
            User user = new Web.User();

            ......   //给user赋值
             db.User.Add(user);
            db.SaveChanges();

2.删除操作:

方法一:

           var db = new Context(); 
           ......//查找user
            db.User.Remove(list);//list为查找出来的user,用remove进行删除
            db.SaveChanges();

方法二:

           var db = new Context();
            ......  //实例化一个类,并给类的ID(主键)赋值,主键是必须赋值,其他属性可以不赋值
            db.Set<User>().Attach(list);//list为实例化的类即user
            db.Entry<User>(list).State = EntityState.Deleted;
            db.SaveChanges();

3.修改操作:

 方法一:

            var db = new Context();
             ......    //先查找出来,然后修改属性
            db.SaveChanges();//进行保存

 方法二:

          var db = new Context();

            .......  //先实例化,然后修改属性值
            db.Set<User>().Attach(list);
            db.Entry<User>(list).State = EntityState.Modified;
            db.SaveChanges();

 如果有导航属性时,在主表savechanges之前,Attach从表


多对多数据的修改:(根据A的ID修改关系表)

         var oldrole= ........   //查找关系表中的数据,(事实上关系表是不被上下文管理的)如果是两个表没有外键(A,B表),都设置导  

        航属性时,要用include链接查询
            List<string> oldids = new List<string>();
            foreach (var item in A.B)
            {
                oldids.Add(item.id);//将与B中的id都取出来放到集合中
            }
            //要删除的数据的ID
            var delete = oldids.Except(ids);
            //要添加的数据的ID
            var add = ids.Except(oldids);
            oldrole.B.RemoveAll(x => delete.Contains(x.ID));
            oldrole.B.AddRange(db.B.Where(x => add.Contains(x.ID)));
             db.SaveChanges();
          




展开阅读全文

没有更多推荐了,返回首页