1.Add
1 #region 1.1 新增学生信息(定义成Int类型,返回受影响的行数) 2 /// <summary> 3 /// 新增学生信息 4 /// </summary> 5 /// <param name="stu"></param> 6 /// <returns></returns> 7 public int Add(Studnet stu) 8 { 9 //把对象加入到EF上下文中,并获取对象的状态管理对象10 DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);11 12 //把状态改为Added13 //要引入System.Data.Entity14 entry.State = System.Data.EntityState.Added;15 16 //保存到数据库17 return db.SaveChanges();18 19 }20 #endregion
2.Delete
2.1根据用户ID来删除
1 #region 2.0 根据学生的ID来删除 2 /// <summary> 3 /// 根据学生的ID来删除 4 /// </summary> 5 /// <param name="id"></param> 6 /// <returns></returns> 7 public int Delete(int id) 8 { 9 Studnet stu = new Studnet() { s_ID = id };10 //删除传过来的ID11 //DbEntityEntry<Studnet> stu= db.Studnets.Where(s => s.s_ID == id) as DbEntityEntry<Studnet>;12 DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);13 //把状态改为deleted14 entry.State = System.Data.EntityState.Deleted;15 16 //保存到数据库17 return db.SaveChanges();18 } 19 #endregion
2.2根据条件来删除
其实就是在where方法中传入了一个lambda表达式,而lambda表达式本质上就是一个匿名函数。
1 #region 2.1 根据条件来删除 2 /// <summary> 3 /// 根据条件来删除 4 /// (给出任意条件,然后删除) 5 /// </summary> 6 /// <returns></returns> 7 public int DeleteBy(System.Linq.Expressions.Expression<Func<Studnet, bool>> deleteWhere) 8 { 9 List<Studnet> stuList = db.Studnets.Where(deleteWhere).ToList();10 //循环删除11 stuList.ForEach(u => db.Studnets.Remove(u));12 13 //保存到数据库14 return db.SaveChanges();15 16 } 17 #endregion
3.Modify
1 #region 3.0 修改 2 /// <summary> 3 /// 修改 4 /// 要告诉程序,哪个属性改了。这里添加一个可变参数数组 5 /// </summary> 6 /// <param name="stu"></param> 7 /// <returns></returns> 8 public int Modify(Studnet stu, params string[] parmeters) 9 {10 //把对象加入到EF容器,并获取状态管理对象11 DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);12 13 //对象的状态改为Unchanged14 entry.State = System.Data.EntityState.Unchanged;15 foreach (string parms in parmeters)16 {17 entry.Property(parms).IsModified = true;18 }19 20 return db.SaveChanges();21 } 22 #endregion
测试修改:
1 /// <summary> 2 /// 修改的测试 3 /// </summary> 4 public Student() 5 { 6 //把Id为1的学生的名字改为xxxxxxxxxxx 7 Studnet stu = new Studnet() { s_ID=1,s_Name="xxxxxxxxxxx"}; 8 //改哪个实体,改哪个属性 9 this.Modify(stu, "s_Name");10 }
Test Modify
测试删除:
1 /// <summary>2 /// 删除的测试3 /// </summary>4 public Student()5 {6 7 this.DeleteBy(u => u.s_ID == 1);8 }
Test Delete
4. Query
4.1根据条件查询
1 #region 4.1 根据条件查询 2 /// <summary> 3 /// 根据条件查询 4 /// 查询的结果一般都是集合,所以返回值类型为泛型集合 5 /// </summary> 6 /// <returns></returns> 7 public List<Studnet> GetStudentList(System.Linq.Expressions.Expression<Func<Studnet, bool>> whereQuery) 8 { 9 return db.Studnets.Where(whereQuery).ToList();10 } 11 #endregion
4.2根据条件查询,查询完之后,还要分组。
1 /// <summary> 2 /// 根据条件查询,查询玩之后,还要分组 3 /// </summary> 4 /// <param name="whereQuery"></param> 5 /// <param name="QroupByQuery"></param> 6 /// <returns></returns> 7 public List<Studnet> GetStudentList<Tkey>(System.Linq.Expressions.Expression<Func<Studnet, bool>> whereQuery, System.Linq.Expressions.Expression<Func<Studnet, Tkey>> QroupByQuery) 8 { 9 return db.Studnets.Where(whereQuery).OrderBy(QroupByQuery).ToList();10 }
测试根据条件查询:
1 public Student()2 {3 this.GetStudentList(u => u.s_ID == 1 && u.s_Sex == "女");4 5 }
根据条件查询
测试根据条件查询,查询完之后再根据条件分组:
1 public Student()2 {3 4 this.GetStudentList(u => u.s_ID >= 1, u => u.s_Sex);5 }
查询并分组
4.3分页查询
1 #region 4.2 分页查询 2 /// <summary> 3 /// 分页查询 4 /// 先排序,再分页 5 /// </summary> 6 /// <param name="pageIndex">页码</param> 7 /// <param name="pageSize">页容量</param> 8 /// <param name="orderLambda">排序条件</param> 9 /// <returns></returns>10 public List<Studnet> GetPagedList<Tkey>(int pageIndex, int pageSize, Expression<Func<Studnet, Tkey>> orderLambda)11 {12 return db.Studnets.OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();13 } 14 #endregion
原标题:EF增删查改(三)
关键词: