你的位置:首页 > ASP.net教程

[ASP.net教程]EF增删查改(三)


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