添加
修改
批量删除
分页
条件查询
启用停用
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();