zoukankan      html  css  js  c++  java
  • EF学习笔记-1 EF增删改查

    首次接触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;
                }
            }
        }
    

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

  • 相关阅读:
    logstash 抓取IIS日志文件写入Elasticsearch
    logstash filter geoip 转换IP为详细地址等内容。
    windows2012 iis配置
    REST接口规范
    windows10后台启动redis
    Docsify生成文档网站
    IDEA类和方法注释自动生成(2019-08-31 21:47写)
    键盘注释
    使用git上传项目解决码云文件次数上传限制(2019-09-25 12:49编写)
    Electron之Hello world(一)
  • 原文地址:https://www.cnblogs.com/aixiaojun/p/8372870.html
Copyright © 2011-2022 走看看