1.Add

 #region 1.1 新增学生信息(定义成Int类型,返回受影响的行数)
/// <summary>
/// 新增学生信息
/// </summary>
/// <param name="stu"></param>
/// <returns></returns>
public int Add(Studnet stu)
{
//把对象加入到EF上下文中,并获取对象的状态管理对象
DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu); //把状态改为Added
//要引入System.Data.Entity
entry.State = System.Data.EntityState.Added; //保存到数据库
return db.SaveChanges(); }
#endregion

2.Delete

2.1根据用户ID来删除

 #region 2.0 根据学生的ID来删除
/// <summary>
/// 根据学生的ID来删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public int Delete(int id)
{
Studnet stu = new Studnet() { s_ID = id };
//删除传过来的ID
//DbEntityEntry<Studnet> stu= db.Studnets.Where(s => s.s_ID == id) as DbEntityEntry<Studnet>;
DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);
//把状态改为deleted
entry.State = System.Data.EntityState.Deleted; //保存到数据库
return db.SaveChanges();
}
#endregion

2.2根据条件来删除

其实就是在where方法中传入了一个lambda表达式,而lambda表达式本质上就是一个匿名函数。

 #region 2.1 根据条件来删除
/// <summary>
/// 根据条件来删除
/// (给出任意条件,然后删除)
/// </summary>
/// <returns></returns>
public int DeleteBy(System.Linq.Expressions.Expression<Func<Studnet, bool>> deleteWhere)
{
//查询出要删除的数据
List<Studnet> stuList = db.Studnets.Where(deleteWhere).ToList();
//循环删除
stuList.ForEach(u => db.Studnets.Remove(u)); //保存到数据库
return db.SaveChanges(); }
#endregion

3.Modify

 #region 3.0 修改
/// <summary>
/// 修改
/// 要告诉程序,哪个属性改了。这里添加一个可变参数数组
/// </summary>
/// <param name="stu"></param>
/// <returns></returns>
public int Modify(Studnet stu, params string[] parmeters)
{
//把对象加入到EF容器,并获取状态管理对象
DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu); //对象的状态改为Unchanged
entry.State = System.Data.EntityState.Unchanged;
foreach (string parms in parmeters)
{
entry.Property(parms).IsModified = true;
} return db.SaveChanges();
}
#endregion

测试修改:

  /// <summary>
/// 修改的测试
/// </summary>
public Student()
{
//把Id为1的学生的名字改为xxxxxxxxxxx
Studnet stu = new Studnet() { s_ID=,s_Name="xxxxxxxxxxx"};
//改哪个实体,改哪个属性
this.Modify(stu, "s_Name");
}

Test Modify

测试删除:

 /// <summary>
/// 删除的测试
/// </summary>
public Student()
{ this.DeleteBy(u => u.s_ID == );
}

Test Delete

4. Query

4.1根据条件查询

 #region 4.1  根据条件查询
/// <summary>
/// 根据条件查询
/// 查询的结果一般都是集合,所以返回值类型为泛型集合
/// </summary>
/// <returns></returns>
public List<Studnet> GetStudentList(System.Linq.Expressions.Expression<Func<Studnet, bool>> whereQuery)
{
return db.Studnets.Where(whereQuery).ToList();
}
#endregion

4.2根据条件查询,查询完之后,还要分组。

 /// <summary>
/// 根据条件查询,查询玩之后,还要分组
/// </summary>
/// <param name="whereQuery"></param>
/// <param name="QroupByQuery"></param>
/// <returns></returns>
public List<Studnet> GetStudentList<Tkey>(System.Linq.Expressions.Expression<Func<Studnet, bool>> whereQuery, System.Linq.Expressions.Expression<Func<Studnet, Tkey>> QroupByQuery)
{
return db.Studnets.Where(whereQuery).OrderBy(QroupByQuery).ToList();
}

测试根据条件查询:

  public Student()
{
this.GetStudentList(u => u.s_ID == && u.s_Sex == "女"); }

根据条件查询

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

  public Student()
{ this.GetStudentList(u => u.s_ID >= , u => u.s_Sex);
}

查询并分组

4.3分页查询

 #region 4.2 分页查询
/// <summary>
/// 分页查询
/// 先排序,再分页
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">页容量</param>
/// <param name="orderLambda">排序条件</param>
/// <returns></returns>
public List<Studnet> GetPagedList<Tkey>(int pageIndex, int pageSize, Expression<Func<Studnet, Tkey>> orderLambda)
{
//分页:一定要注意,Skip之前一定要OrderBy,因为到时候会生成一个RowNum的分页查询(通过SQL ServerProfier侦听到的)
return db.Studnets.OrderBy(orderLambda).Skip((pageIndex - ) * pageSize).Take(pageSize).ToList();
}
#endregion

最新文章

  1. linux下关掉teamviewer服务
  2. jquery table 拼接集合
  3. 关于JavaScript是否会阻塞图片加载
  4. 第k大值01背包问题
  5. DBA 思想天空笔记
  6. DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
  7. VMware安装Centos6.4及CentOS的基本设置
  8. 从同步阻塞聊到Java三种IO方式
  9. 记一次被吊打的排位赛(writeup)
  10. DRF中的APIView源码分析
  11. 在 .NET项目中使用 Redis(2018.10.16)
  12. 03-封装Response响应
  13. Python开发——6.文件操作
  14. es基本修改相关的
  15. Elasticsearch学习笔记2
  16. hadoop1.x异常
  17. HDU 5211 Mutiple 水题
  18. HDU 6194【后缀数组】
  19. 【Python】Django RestFramework资料
  20. Lua库-bit32库

热门文章

  1. linux上挂载windows共享文件夹
  2. android studio svn不显示问题
  3. 在Linq to Entity 中使用lambda表达式来实现Left Join和Join
  4. asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
  5. Java Web dev搭建经验总结
  6. Swift 程序流程控制
  7. UNIX环境高级编程笔记之进程环境
  8. asp.net mvc 配合前端js的CMD模块化部署思想,小思路
  9. mac x Yosemide(10.10) 下安装 jdk 1.7 (jdk 1.8)的方法
  10. D3D11中的MSAA