EF增删改查

 添加
修改
批量删除
分页
条件查询
启用停用

 

我的笔记

 

 

1. 关于序列化的问题,经常会直接把ADO实体类集合直接序列化,但是有很多属性用不到
 对象.用不到的属性 = null;   //减少传输量
 
2. 前台关于部分页面的问题(不要全局变量导致 部分页面和主页面有兼容问题)
 var LY = {};  //在部分页面,把变量和函数都存入LY这个变量中。就可以得到解决
 LY.name = "流云";
 LY.getName = function(){
  return LY.name;
 };
 
3. 缓存Jquery的对象,可以提高代码的优化性
  $("#auidtName").val();   //如果该代码要出现5,6次, 用一个变量就存储起来
 
4. 在服务器查询任何对象到客户端,如果有主键必须把主键带到客户端,方便以后删除等其他操作

5. 如果查询的对象,要序列化到客户端(优先考虑LINQ + 匿名对象!!)

6.


 Model1 context = new Model1();
//context为entity framework生成的实体类
EF访问数据库:
 1、以下增加一名学生,并指定学生所在班级
  var stu = new Student();
  stu.GradeId = 1;
  context.Set<Student>().Add(stu);
  context.SaveChange();
 
 2. 以下增加一名学生,并增加一个新班级,让学生属于这个新班级
  var stu = new Student();
  stu.Grade = new Garde(){GradeName = "一年级"};
  context.Set<Student>().Add(stu);
  context.SaveChange();
  
 3. 增加一名学生,指定班级,并同时保存该学生自主选择学习的课程(课程已存在)。
  var stu = new Student();
  stu.GradeId = 1;
  stu.StudentSubjects.Add(new StudentSubject(){Student=stu,SubjectId=1});
  Save();
  
 4. 为已存在的学生分配要学习的课程(已存在)
  var stuId1 = 2;
  var stuId2 = 3;
  var stuSub = new StudentSubject(){StudentId = stuId,SubjectId = subId};
  dbContext.Set<StudentSubject>().Add(stuSub);
  context.SaveChange();
  
 5. 为已存在的学生新增一门课程
  var stuId = 2;
  var sub = Subject(){SubjectName = "英语"};
  var stusb = new StudentSubject(){StudentId = stuId,Subject = sub}
  dbContext.Set<StudentSubject>().Add(stusb);
  
 6. 新增一名学生,并同时为它新增一门课程
  var stu = new Student();
  stu.GradeId = 1;   //指定班级
  var sub = new Subject(){SubjectName = "英语"};  //创建一个新课程
  var stusb = new StudentSubject(){Student = stu,Subject = sub};
  
修改:
 1. 修改一名已存在学生的所在班级
  var stu = Find(id);  //具有缓存的效果
  stu.GradeId = 3;  //修改班级的外键
  
 2. (从控制器传到业务的Model可以直接用,不需要再从数据库取)
  var stu = 从控制器传来的对象;   //前提需要Id
  context.Set<Student>().Attach(stu);  // 添加到容器中
  context.Entry<Student>(stu).Property(o=>o.GradeId).IsModified = true;  //标明这条数据已经修改过的
  
 3.  使用injectFrom自动复制,通常情况都不推荐此做法。
  Var stu=从控制器传来的对象;
  Var oldStu=Find(stu.Id);//从数据库中取来的对象
  oldStu.InjectFrom(stu);
  context.SaveChange();
    
 4.  修改一名已存在学生的已选课程(删除学生当前所有已选课程,将修改后的课程列表重新生成(需要引入EntityFramework.Extend框架)。)
  int stuId = 1;
  var stu2= cotext.Set<Student>().Find(stuid );  //查询该学生
  context.Set<StudentSubject>().Delete(o => o.StudentId == stuid); //删除已选学生课程
  Stu2.StudentSubjects=new List<StudentSubject>();//重置集合
   Stu2.StudentSubjects.Add(new StudentSubject(){....});//重新添加 
删除 
 1.  先查询出来再删除(不推荐)
  var stu= context.Set<Student>().Where(o=>o.Name.Contains(“李红”));
  context.Set<Student>().Remove(stu);
  context.SaveChange();
  
 2. 删除ID为1的学生全部的课程(需要引入Extend扩展框架)
  ontext.Set<StudentSubject>().Delete(o=>o.StudentId==1);
 
 3.  删除ID为1的学生以及和他关联的所有数据(EF默认是级联删除)
  var stu= context.Set<Student>().Find(1);//从数据库取出当前数据
  context.Set<Student>().Remove(stu);
  context.SaveChange();
 
 4. 代理对象删除
  Var stu=new Student();
  stu.Id=1;      //此对象为一个主键属性赋了值,因为删除的时候只需要主键
  context.Set<Student>().Remove(stu);
  context.SaveChange();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值