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

测试修改:

EF增删查改(三)------终极版
 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

测试删除:

EF增删查改(三)------终极版
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         }

 

测试根据条件查询:

EF增删查改(三)------终极版
1  public Student()

2         {

3             this.GetStudentList(u => u.s_ID == 1 && u.s_Sex == "");

4 

5         }
根据条件查询

测试根据条件查询,查询完之后再根据条件分组:

EF增删查改(三)------终极版
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

 

你可能感兴趣的:(EF增删查改(三)------终极版)