首次接触Entity FrameWork,就感觉非常棒。它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想。最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时如何处理的。

第一步:创建自定义的DbContext来连接自己的数据库。

public class DataBaseContext : DbContext
{
public DataBaseContext() : base("name=SQLCONN")
{ }
public DbSet<Model.Entities.StudentEntity> StudentEntities { get; set; }
}

1、新增操作

我们会根据前台传过来的实体信息对数据库的表进行新增操作。对于以前使用SQL语句的方式,我们会写很长的SQL语句来实现。而对于EF来说,只需要几句简单的代码就可以搞定。

public void Insert(StudentEntity studentEntity)
{
if(studentEntity == null)
throw new ArgumentNullException(nameof(studentEntity)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
dataBaseContext.Set<StudentEntity>().Add(studentEntity);
dataBaseContext.SaveChanges();
}
}

2、删除操作

对于删除来说,通常我们使用软删除来操作。毕竟数据库中数据尽量不要真的删除了。那么数据表中经常会设置一个IsDeleted字段。那么我们只需要给IsDeleted字段赋值,重新再SaveChanges就可以了。

public void Delete(int id)
{
if(id == 0)
throw new ArgumentNullException(nameof(id)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
StudentEntity studentEntity = dataBaseContext.Set<StudentEntity>().FirstOrDefault(t => t.Id == id); if (studentEntity != null) studentEntity.Isdeleted = true; dataBaseContext.SaveChanges();
}
}

3、修改操作

通过刚才删除操作的例子,我们可以知道删除其实也就是修改方式的一种。我们只是对其中的一个字段进行修改,然后在进行SaveChanges操作。那么对于修改操作,也是一样的思想。不同的是修改操作会根据前台传过来的实体信息来给需要修改的字段赋值或者实际场景的业务来进行修改。

public void Update(StudentEntity studentEntity)
{
if (studentEntity == null)
throw new ArgumentNullException(nameof(studentEntity)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
StudentEntity student = dataBaseContext.Set<StudentEntity>().FirstOrDefault(t => t.Id == studentEntity.Id); if (student != null)
{
student.StuName = studentEntity.StuName;
student.StuNo = studentEntity.StuNo;
student.StuSex = studentEntity.StuSex;
student.Grade = studentEntity.Grade;
} dataBaseContext.SaveChanges();
}
}

我们可以看到,不论是修改还是删除,我们都会先从数据库中查询出对应的信息,然后再做对应的修改赋值操作,最后调用SaveChanges方法。

备注:所有增删改过程都需要调用SaveChanges方法,这样才能更新到数据库中。

4、查询操作

对于查询来说,一般会有查询所有实体信息和根据主键查询单个实体信息。

查询所有实体

public List<StudentEntity> GetList()
{
using (DataBaseContext dataBaseContext = new DataBaseContext())
{
List<StudentEntity> studentEntities = dataBaseContext.Set<StudentEntity>().ToList(); return studentEntities;
}
}

主键查询单个实体

public StudentEntity GetEntity(int id)
{
if (id == 0)
throw new ArgumentNullException(nameof(id)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
StudentEntity studentEntity = dataBaseContext.Set<StudentEntity>().FirstOrDefault(t => t.Id == id); return studentEntity;
}
}

完整案例

    public class StudentService
{
public List<StudentEntity> GetList(string stuName, string stuNo)
{
using (DataBaseContext dataBaseContext = new DataBaseContext())
{
List<StudentEntity> studentEntities;
if (!string.IsNullOrEmpty(stuName))
{
studentEntities = dataBaseContext.Set<StudentEntity>().Where(t => t.StuName == stuName).ToList();
} else if (!string.IsNullOrEmpty(stuNo))
{
studentEntities = dataBaseContext.Set<StudentEntity>().Where(t => t.StuNo == stuNo).ToList();
}
else
{
studentEntities = dataBaseContext.Set<StudentEntity>().ToList();
} return studentEntities;
}
} public void Insert(StudentEntity studentEntity)
{
if(studentEntity == null)
throw new ArgumentNullException(nameof(studentEntity)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
dataBaseContext.Set<StudentEntity>().Add(studentEntity);
dataBaseContext.SaveChanges();
}
} public void Update(StudentEntity studentEntity)
{
if (studentEntity == null)
throw new ArgumentNullException(nameof(studentEntity)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
StudentEntity student = dataBaseContext.Set<StudentEntity>().FirstOrDefault(t => t.Id == studentEntity.Id); if (student != null)
{
student.StuName = studentEntity.StuName;
student.StuNo = studentEntity.StuNo;
student.StuSex = studentEntity.StuSex;
student.Grade = studentEntity.Grade;
} dataBaseContext.SaveChanges();
}
} public void Delete(int id)
{
if(id == 0)
throw new ArgumentNullException(nameof(id)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
StudentEntity studentEntity = dataBaseContext.Set<StudentEntity>().FirstOrDefault(t => t.Id == id); if (studentEntity != null) studentEntity.Isdeleted = true; dataBaseContext.SaveChanges();
}
} public StudentEntity GetEntity(int id)
{
if (id == 0)
throw new ArgumentNullException(nameof(id)); using (DataBaseContext dataBaseContext = new DataBaseContext())
{
StudentEntity studentEntity = dataBaseContext.Set<StudentEntity>().FirstOrDefault(t => t.Id == id); return studentEntity;
}
} public List<StudentEntity> GetList()
{
using (DataBaseContext dataBaseContext = new DataBaseContext())
{
List<StudentEntity> studentEntities = dataBaseContext.Set<StudentEntity>().ToList(); return studentEntities;
}
}
}

有不对的地方请各位批评指正,互相学习!

EF学习笔记-1 EF增删改查的更多相关文章

  1. 【JAVAWEB学习笔记】20_增删改查

    今天主要是利用三层架构操作数据库进行增删查改操作. 主要是编写代码为主. 附图: 前台和后台 商品的展示 修改商品

  2. HTML5+ 学习笔记3 storage.增删改查

    //插入N条数据 function setItemFun( id ) { //循环插入100调数据 var dataNum = new Number(id); for ( var i=0; i< ...

  3. Python学习笔记-列表的增删改查

  4. [学习笔记] Oracle基础增删改查用法

    查询 select *|列名|表达式 from 表名 where 条件 order by 列名 select t.* from STUDENT.STUINFO t where t.stuname = ...

  5. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

  6. EF学习笔记-2 EF之支持复杂类型的实现

    使用过.NET的小伙伴们知道,在我们的实体模型中,除了一些简单模型外,还有一些复杂类型,如几个简单的类型组合而成的类型:而EF除了在实现基本的增删改查之外,也支持复杂类型的实现. 那么如何手动构造复杂 ...

  7. hibernate系列笔记(1)---Hibernate增删改查

    Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...

  8. JDBC基础学习(一)—JDBC的增删改查

    一.数据的持久化     持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以固化,而持久化的实现过程大多通过各 ...

  9. mybatis学习(五)——增删改查及自增主键的获取

    一.mybatis的增删改查 1.修改hotelMapper接口 package com.pjf.mybatis.dao; import com.pjf.mybatis.po.Hotel; publi ...

随机推荐

  1. 分割回文串 · Palindrome Partitioning

    [抄题]: 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串. 返回s所有可能的回文串分割方案. 给出 s = "aab",返回 [ ["aa", & ...

  2. tp中引入js、css、img的问题

    方法一: 直接把js.css.img放到网站公共目录/Public/下. 然后直接在模板文件中使用__PUBLIC__进行替换. 方法二: 在模块配置文件config.php中配置指定的路径,如下: ...

  3. WebBrowser-Javascript与C++互操作

    WebBrowser控件是Microsoft提供的一个用于网页浏览的客户端控件,WebBrowser控件的使用相当广泛,例如很多邮件客户端都是使用可编辑的WebBrowser控件作为写邮件的工具,也有 ...

  4. Spring框架的IOC之注解方式的快速入门

    1. 步骤一:导入注解开发所有需要的jar包 * 引入IOC容器必须的6个jar包 * 多引入一个:Spring框架的AOP的jar包,spring-aop的jar包 2. 步骤二:创建对应的包结构, ...

  5. TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)

    1.准备项 1.1.服务器一台,1H4G(更小内存应该也可以,自行测试),系统:Ubuntu 16.04 64位 1.2.数据库一个,MYSQL,MSSQL都可以(还有其他的,自行配置),教程是MSS ...

  6. bootstrap下modal模态框中webuploader控件按钮异常(无法点击)问题解决办法【转】

    http://bbs.csdn.net/topics/391917552 具体如下:   $(function () {         var _$modal = $('#MyModal');    ...

  7. MVC FormCollection 无法获取值的问题

     把action定义为[HttpPost],并且ajax.beginform中ajaxoption中定义为Post,在提交表单时就可以获取FormCollection的值了.httpGet或者后台不定 ...

  8. Golang之beego读取配置信息,输出log模块

    1,准备好配置文件 [server] listen_ip = "0.0.0.0" listen_port = [logs] log_level=debug log_path=./l ...

  9. linux 动态库 静态库 函数覆盖

    本文讨论了linux动态库  静态库中函数的覆盖问题. 测试目的: 同名函数,分别打成动态库libdync_lib.so与静态库libstatic_lib.a,并把libstatic_lib.a打到另 ...

  10. dump()

    输出格式化的对象