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         {
12             return db.Studnets.OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
13         }
14         #endregion
时间: 2024-12-14 18:45:43

EF增删查改(三)------终极版的相关文章

EF增删查改加执行存储过程和sql语句,多种方法汇总

1 ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubTime=DateTime.Now }; 2 //增 3 using (EntityContext db = new EntityContext()) 4 { 5 6 /*方法1*/ 7 db.ActionUrls.Add(c); 8 db.SaveChanges(); 9 /*方法2*/ 10 db.Set&

EF增删查改基类

/// <summary> /// EF DAL CURD基类 /// </summary> /// <typeparam name="T"></typeparam> public class BaseDAL<T> where T : class, new() { /// <summary> /// 上下文网关 /// </summary> protected SchoolEntities db = n

EF实现增删查改功能

In the previous tutorial you created an MVC application that stores and displays data using the Entity Framework and SQL Server LocalDB. In this tutorial you'll review and customize the CRUD (create, read, update, delete) code that the MVC scaffoldin

MongoDB入门学习(三):MongoDB的增删查改

对于我们这种菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改. 因为MongoDB存储数据都是以文档的模式,所以在操作它的数据时,也是以文档为单位的.那么我们实现增删查改也是以文档为基础,不知道文档是什么的同学可以看看上篇介绍的基本概念. 1.插入文档 向MongoDB集合中插入文档的基本方法是insert: 单个插入 > document = {key : value} > db.collecti

在MVC程序中,使用泛型仓储模式和工作单元实现增删查改

在这片文章中,我将自己动手为所有的实体:写一个泛型仓储类,还有一个工作单元. 工作单元的职责就是:为每一个实体,创建仓储实例.仓储(仓库)的职责:增删查改的功能实现. 我们将会在控制器中,创建工作单元类(UnitOfWork)的实例,然后根据实体,创建仓储实例,再就是使用仓储里面的方法,做操作了. 下面的图中,解释了,仓储和EF 数据上文的关系,在这个图里面,MVC控制器和仓储之间的交互,是通过工作单元来进行的,而不是直接和EF接触. 那么你可能就要问了,为什么要使用工作单元??? 工作单元,就

4.CRUD Operations Using the Repository Pattern in MVC【在MVC中使用仓储模式进行增删查改】

原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 上一篇文章,讲到了MVC中基本的增删查改,这篇文章,我会继续说到,使用仓储模式,进行增删查改. 什么是仓储模式呢,我们先来了解一下:  仓储模式是为了在程序的数据访问层和业务逻辑层之间创建一个抽象层,它是一种数据访问模式,提供了一种更松散耦合的数据访问方法.我们把创建数据访问的逻辑代码写在单独的类中,或者类库中

6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pattern-and-dep/ 系列目录: Relationship in Entity Framework Using Code First Approach With Fluent API[[使用EF Code-First方式和Fluent API来探讨EF中的关系]] Code First Mig

5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pattern-and-uni/ 系列目录: Relationship in Entity Framework Using Code First Approach With Fluent API[[使用EF Code-First方式和Fluent API来探讨EF中的关系]] Code First Mig

使用EntityFramework6完成增删查改和事务

使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库进行操作,整个过程就像操作数组一样,我们只管修改或向集合中添加值,最后通知EF保存修改后的结果就可以了. 准备工作 为了演示,我在数据库中建了两张表.class表用于表示班级,class_id是班级编号,class_name是班级名称.第二张表是学生表student,student_id为学生编号,name为