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 //把状态改为Added 13 //要引入System.Data.Entity 14 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 //删除传过来的ID 11 //DbEntityEntry<Studnet> stu= db.Studnets.Where(s => s.s_ID == id) as DbEntityEntry<Studnet>; 12 DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu); 13 //把状态改为deleted 14 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 //对象的状态改为Unchanged 14 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
测试修改:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
测试删除:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 /// <summary> 2 /// 删除的测试 3 /// </summary> 4 public Student() 5 { 6 7 this.DeleteBy(u => u.s_ID == 1); 8 }
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 }
测试根据条件查询:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 public Student() 2 { 3 this.GetStudentList(u => u.s_ID == 1 && u.s_Sex == "女"); 4 5 }
测试根据条件查询,查询完之后再根据条件分组:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 {
//分页:一定要注意,Skip之前一定要OrderBy,因为到时候会生成一个RowNum的分页查询(通过SQL ServerProfier侦听到的) 12 return db.Studnets.OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); 13 } 14 #endregion