• 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;
                }
            }
        }
    

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

  • 相关阅读:
    面向过程
    生成器
    迭代器
    装饰器
    函数及嵌套
    字符编码与文件操作
    linux_ssh
    LNMP
    BZOJ 3238: [Ahoi2013]差异
    BZOJ 3998: [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/aixiaojun/p/8372870.html
Copyright © 2020-2023  润新知