用EF框架——进行增删查改

目录

  • 一、什么是EF
  • 二、EF框架优缺点
  • 三、进行增删查改
    • 1)新增与批量新增:
    • 2)修改的2中方式:
    • 3)删除与批量删除:
    • 4)查询的几种方式:

一、什么是EF

全称EntityFramework,官方解释是ADO.NET(专门用于访问数据库的组件)中的一套支持面向数据的软件应用程序的技术,是微软的一个ORM(object relation mapping)框架。

二、EF框架优缺点

优点:

1.简洁的Linq to Sql语句大大提高了开发人员的效率,不要再写复杂的sql语句;

2.不再需要再管应用程序如何去连接数据库;

3.EF可以用作用于数据服务和OData Service的基础设施;

缺点:

1.由于linq语句编译之后就是sql,对于这种自动生成的sql语句无法控制;

2.EF的运行机制会消耗大量内存,大大降低了程序运行效率,从而导致降低了用户在客户端的体验效果;

3.一旦数据结构发生变化,需要更新EF数据model;有时还可能会出现找不到更新过的实体类这种情况;

三、进行增删查改

创建一个班级表 (ClassInfos),数据如下,通过EF框架创建一个实体类 TextDBEntities
用EF框架——进行增删查改_第1张图片

1)新增与批量新增:

控制器代码如下:

//新增
 public ActionResult Add()
        {
            var classinfo = new ClassInfo()
            {
                Name = "2018173807",
                Remark = "7班",
                TeacherID = 1,
                Term = 2
            };
 //两种新增方式:           
            db.ClassInfos.Add(classinfo);
            db.Entry(classinfo).State = System.Data.Entity.EntityState.Added;
//批量新增
            List<ClassInfo> classInfos = new List<ClassInfo>()
            {
                new ClassInfo(){
                Name="2018173801",
                Remark="1班",
                TeacherID=1,
                Term=2 },
                new ClassInfo() {
                Name="2018173802",
                Remark="2班",
                TeacherID=1,
                Term=2 }
            };
            db.ClassInfos.AddRange(classInfos);
            db.SaveChanges();
            return View();
        }

通过新增和批量新增增加了3条数据,实现结果如下图:
用EF框架——进行增删查改_第2张图片

2)修改的2中方式:

控制器代码如下:

 public ActionResult Edit()
        {
            //修改的2种方式
            //1,先查询再修改,修改某个属性,不会影响其他属性的变化
            //2,new对象,将对象的状态,改为修改状态,这样,可能将其他属性设置为空

			var classinfo = db.ClassInfos.Find(1003);
            classinfo.Name = "2018173804";
            classinfo.Remark = "四班";
			db.SaveChanges();
			
            var classInfo = new ClassInfo()
            {
                ID = 1005,
                Name = "2018173803",
                Remark = "3班",
                TeacherID = 1,
                Term = 2
            };
            db.Entry(classInfo).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
            return View();
        }

通过上述两种修改方式,我们更改了主键 为1003和1005的班级信息,实现结果如下图:
用EF框架——进行增删查改_第3张图片

3)删除与批量删除:

控制器代码如下:

  public ActionResult Delete()
        {
  //批量删除,删除备注为  四班的所有班级信息
            List<ClassInfo> classIDSS = db.ClassInfos.Where(p => p.Remark == "四班").ToList();
            db.ClassInfos.RemoveRange(classIDSS);
//删除的2种方式
 //1,先查询到ID主键再删除
 //2,new对象,通过new对象找到ID主键,将对象的状态改为删除状态
            var classinfo = db.ClassInfos.Find(1005);
            db.ClassInfos.Remove(classinfo);

            var classInfo = new ClassInfo()
            {
                ID = 1004
            };
            db.Entry(classInfo).State = System.Data.Entity.EntityState.Deleted;
            db.SaveChanges();
            return View();
        }

通过上述删除了3条数据,实现结果如下图:
用EF框架——进行增删查改_第4张图片

4)查询的几种方式:

控制器代码如下:

 public ActionResult Index()
        {
            //精准查询,查询班级为2018173806的班级信息
            var classinfos2 = db.ClassInfos.Where(p => p.Name == "2018173806").ToList();
            //模糊查询,查询班级名含2018的班级信息
            var classinfos3 = db.ClassInfos.Where(p => p.Name.Contains("2018")).ToList();
            //组合查询,查询学期为1,并且教师为1的班级信息
            var classinfos4 = db.ClassInfos.Where(p => p.Term == 1 && p.TeacherID == 1).ToList();
            //组合查询,查询学期为2或者教师为1的班级信息
            var classinfos5 = db.ClassInfos.Where(p => p.Term == 2 || p.TeacherID == 1).ToList();

            return View();
        }

你可能感兴趣的:(用EF框架——进行增删查改)