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             //把状态改为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

测试修改:

 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         {
//分页:一定要注意,Skip之前一定要OrderBy,因为到时候会生成一个RowNum的分页查询(通过SQL ServerProfier侦听到的)
12 return db.Studnets.OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); 13 } 14 #endregion

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值