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

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

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

    ActionUrl c = new ActionUrl() { ActionName="test", RequestUrl="/123/123", SubTim ...

  2. MVC学习之路(1) EF 增删查改合集

    首先再Model中创建一个类[WMBlogDB] public class WMBlogDB : DbContext { //连接字符串. public WMBlogDB() : base(" ...

  3. EF增删查改基类

    /// <summary> /// EF DAL CURD基类 /// </summary> /// <typeparam name="T">& ...

  4. Ext3.4实现增删查改(form版)

    var TaskPolicyStore = new Ext.data.JsonStore( {    autoLoad : false,    url : 'PolicyServlet?method= ...

  5. Entity Framework(三)---FluentAPI和增删查改

    一.FluentAPI: 1.基本配置: namespace ConsoleApp14.ModelConfig { public class PersonConfig: EntityTypeConfi ...

  6. EF各版本增删查改及执行Sql语句

    自从我开始使用Visual Studio 也已经经历了好几个版本了,而且这中间EF等框架的改变也算是比较多的.本篇文章记录下各个版本EF执行Sql语句和直接进行增删查改操作的区别,方便自己随时切换版本 ...

  7. 3.EF 6.0 Code-First实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-entity-framework-5-0-code- ...

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

            对于我们这样的菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改.         由于M ...

  9. [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版

    (课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...

随机推荐

  1. 使用visualVM 1.3.8(visualvm_138-ml.zip) 监控远程Tomcat运行情况

    服务端CentOS6.4 x64安装的是jdk1.7 下载visualVM1.3.8-ml 也就是多语言版本,包含中文,界面用起来方便.官方下载地址比较慢,百度上搜索的都是csdn,51cto等必须登 ...

  2. 常用天气预报API接口整理(转)

    文章转自:http://www.nohacks.cn/post-35.html 自序: 由nohacks.cn 收集整理,来源于网络,版权归原作者所有,基本收集了网络上能使用的大部分天气API接口,作 ...

  3. mysql设置连接超时时间参数:wait_timeout

    [root@ ~]# mysql -h 192.168.0.* -uroot -pEnter password: Welcome to the MySQL monitor. Commands end ...

  4. 今日 使用ajaxfileupload 异步上传 但是在IE下面 会弹出下载框

    本来以为ajaxfileupload.js的问题 后来发现 其实是 后台代码返回来的时候 修改context.Response.ContentType = "text/html"; ...

  5. JIRA 6.3.6版本部署

    JIRA 6.3.6版本部署 部署环境:Ubuntu Server .JDK1.7 JIRA文件:atlassian-jira-6.3.6.tar.gz 下载地址:百度云网盘地址http://pan. ...

  6. mac上使用生成RSA公钥和密钥

    关于RSA加密解密的问题,没事弄了一下,先把主要的流程保存下来,以备交流或者以后用. 首先确保你的电脑上安装了openssl,一般mac系统安装后都会自动安装!怎么安装??.....请百度...... ...

  7. TCP/IP 网络编程 (三)

    server端未处理高并发请求通常採用例如以下方式: 多进程:通过创建多个进程提供服务 多路复用:通过捆绑并统一管理 I/O 对象提供服务 多线程:通过生成和客户端等量的线程提供服务 多进程serve ...

  8. Python的Descriptor和Property混用

    一句话,把Property和Descriptor作用在同一个名字上,就只有Property好使.

  9. MySQL数据库从GBK转换到UTF-8最简单解决方案(也适用于其它编码转换)

    1.使用mysqldump导出表结构,如: mysqldump -d -u root -p 数据库名 >/root/struct.sql 2.使用mysqldump以特定编码导出数据(其中utf ...

  10. Java中RSA非对称密钥加解密使用示例

    一.简介: RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名.这个算法经受住了多年深入的密码分析,虽然密码分 ...