1)什么是EF框架

全称EntityFramework 官方点的解释是Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架

什么是ORM?

ORM(Object Relational Mapping) 翻译过来就是对象关系映射。ORM 是将数据存储从域对象自动映射到关系型数据库的工具。ORM主要包括3个部分:域对象、关系数据库对象、映射关系

2)EF框架的三种模式

DataBase First 数据库优先, 传统的表驱动方式创建EDM,然后通过EDM生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。简历理解就是先设计数据库,创建好数据库映射成对象和上下文。

Model First 模型优先,先创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。简单理解就是设计EDM模型然后生成到数据库和创建对象和上下文。

CodeFirst 代码优先,手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是需要手动定义实体模型和关系映射。简单理解就是自己写好实体对象和映射关系,最后通过命令生成到数据库中去。

3)EF框架的优点与缺点

优点:
1.简洁的Linq to Sql语句大大提高了开发人员的效率,不要再写复杂的sql语句;
2.不再需要再管应用程序如何去连接数据库;
3.EF可以用作用于数据服务和OData Service的基础设施;

缺点:
1.由于Linq语句编译之后就是sql,对于这种自动生成的sql语句无法控制;
2.EF的运行机制会消耗大量内存,大大降低了程序运行效率,从而导致降低了用户在客户端的体验效果;
3.一旦数据结构发生变化,需要更新EF数据model;有时还可能会出现找不到更新过的实体类这种情况;

4)使用EF在MVC中实现增删改查

首先建个数据库,名为(TestDB),在此数据库中添加一张表,名为(ClassInfos),如图所示:

然后再MVC中建一个ClassInfo控制器:

1)新增

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using efZSGC.Models;namespace efZSGC.Controllers
{public class ClassInfoController : Controller{TestDB6Entities db = new TestDB6Entities();// GET: ClassInfopublic ActionResult Index(){//新增var classinfo = new ClassInfo(){Name = "2018173807",Remark = "七班",Term = 1,TeacherID = 2};//第一种方法db.ClassInfos.Add(classinfo);//第二种方法 (二者用其中之一)//db.Entry(classinfo).State = System.Data.Entity.EntityState.Added;db.SaveChanges();return View();}}
}

2)批量新增

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using efZSGC.Models;namespace efZSGC.Controllers
{public class ClassInfoController : Controller{TestDB6Entities db = new TestDB6Entities();// GET: ClassInfopublic ActionResult Index(){//批量新增List<ClassInfo> classInfos = new List<ClassInfo>() {new ClassInfo(){Name = "2018173801",Remark = "一班",Term = 1,TeacherID = 2},new ClassInfo(){Name = "2018173802",Remark = "二班",Term = 1,TeacherID = 2}};db.ClassInfos.AddRange(classInfos);db.SaveChanges();return View();}}
}

3)修改

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using efZSGC.Models;namespace efZSGC.Controllers
{public class ClassInfoController : Controller{TestDB6Entities db = new TestDB6Entities();// GET: ClassInfopublic ActionResult Index(){      //修改方法一:先查询再修改,修改谋个熟悉,不会影响其他属性变化var set = db.ClassInfos.Find(6);set.Remark = "666";db.SaveChanges();//修改方法二:new对象,将对象的状态,改为修改状态,这样可能将其他属性设置为空var classinfoset = new ClassInfo(){ID = 1,Name = "2018173801",Remark = "一班",Term = 1,TeacherID = 2};db.Entry(classinfoset).State = System.Data.Entity.EntityState.Modified;db.SaveChanges();return View();}}
}

4)删除

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using efZSGC.Models;namespace efZSGC.Controllers
{public class ClassInfoController : Controller{TestDB6Entities db = new TestDB6Entities();// GET: ClassInfopublic ActionResult Index(){  //单个删除var classinfo=db.ClassInfos.Find(1);db.ClassInfos.Remove(classinfo); db.SaveChanges();    //批量删除List<ClassInfo> classInfosd = db.ClassInfos.Where(p => p.Term==4).ToList();db.ClassInfos.RemoveRange(classInfosd);db.SaveChanges();return View();}}
}

5)查询

using System.Linq;
using System.Web;
using System.Web.Mvc;
using efZSGC.Models;namespace efZSGC.Controllers
{public class ClassInfoController : Controller{TestDB6Entities db = new TestDB6Entities();// GET: ClassInfopublic ActionResult Index(){       //精准查询。查询班级号为2018173806的     var classinfos1 = db.ClassInfos.Where(p => p.Name == "2018173806").ToList();//模糊查询 查询班级号含有2018的var classinfos2 = db.ClassInfos.Where(p => p.Name.Contains("2018")).ToList();//组合查询 查询学期是2同时教师也是1var classinfo3 = db.ClassInfos.Where(p => p.Term == 2 && p.TeacherID == 1).ToList();//组合查询 查询学期是2或者教师是1的var classinfo4 = db.ClassInfos.Where(p => p.Term == 2 || p.TeacherID == 1).ToList();db.SaveChanges();return View();}}
}

以上就是关于实体框架EF(Entity Framework)的基本介绍与实例

简单了解实体框架EF(Entity Framework)相关推荐

  1. 实体框架(Entity Framework)简介

    实体框架(Entity Framework)简介 实体框架(Entity Framework)简介 简称EF,与ADO.NET关系 ADO.NET Entity Framework 是微软以 ADO. ...

  2. 实体框架(Entity Framework)--简介

    是什么? 微软官方解释:ADO.NETEntity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早起被称为ObjectSpace,现在版本 ...

  3. 初学实体框架EF(Entity Framework)

    什么是EF? 实体框架EF是微软的一个ORM框架.是支持面向数据的软件开发应用程序. ORM是面向对象的对象模型和关系型数据库的数据结构之间的相互转换.EF是ORM框架的一种,其中O代表实体,M代表的 ...

  4. C#:实体框架EF(entity framework)

    本文来自:http://www.cnblogs.com/xuf22/articles/5513283.html 一.什么是Entity Framework 微软官方提供的ORM工具,ORM让开发人员节 ...

  5. 灵动思绪EF(Entity FrameWork)

    很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前, ...

  6. ORM框架 之 Entity Framework

    Entity Framework 1.ADO.NET Entity Framework是以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早起被称为ObjectSpac ...

  7. EF(Entity Framework、EF Core)

    学习EF的前提: 熟悉Linq和ADO.Net, 熟悉委托和Lamdba 在使用EF框架进行开发时,我们大多情况使用Linq进行数据查询和操作,而EF底层实现是用ADO.Net进行封装的 EF框架其实 ...

  8. EF | Entity framework

    1 首先在项目中添加一个ADO.NET实体数据模型,选好需要的表后,完成.然后它就会自动给我们应用了如下这些类库,下面是介绍这些类库的作用,及对edmx这个XML文件进行介绍 关于edmx文件的介绍 ...

  9. MVC实体框架EF实现分页

    使用MvcPager控件实现 MvcPager的介绍 MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源 ...

最新文章

  1. 设计模式 — 行为型模式 — 迭代器模式
  2. 用设计模式去掉没必要的状态变量 —— 状态模式
  3. FSAF 让网络自己决定实例输出层
  4. 普及几个小常识,新手技能补充
  5. Activity加载View调用顺序
  6. 我找到一个价值5.5万美元的 Facebook OAuth账户劫持漏洞
  7. hal库开启中断关中断_STM32 HAL库学习系列第9篇---NVIC按键外部中断函数
  8. Feign 简介与使用入门,请求、响应压缩,日志记录
  9. 万字长文干货,广告投放中常说的CPA、CPC、CPD、CPT、CPS、CPM、CPI是什么意思?
  10. asm source code note 1.7_switch case分支的实现
  11. 生命在于学习——密码暴力破解
  12. 旅游出行 APP 哪家强?
  13. word2007打印在什么地方
  14. 【JPress】jpress-core架构
  15. 域格LPM2100 me NB模块PSM相关问题
  16. 0.进校的第一张Excel表:“住宿分布表” ——《Excel“智能化”之路》 系列文章
  17. VB和VB.NET的大致区别
  18. 程序员不爱炫富?不,那是你了解的程序员
  19. 【GPGPU编程模型与架构原理】第一章 1.3 现代 GPGPU 产品
  20. 谷歌收购机器人公司 不满足虚拟世界欲踏进现实

热门文章

  1. java cstring_CString 操作指南
  2. #KINDLE 电子书制作指南 html转kf8/mobi
  3. 踢爆IT劣书出版黑幕——由清华大学出版社之《C语言入门很简单》想到的(1)...
  4. 企业中台最佳实践----阿里等商业巨头组织架构的战略变迁(四)
  5. 快速了解K4B2G1646F-BYK0
  6. java栈与堆的区别
  7. MATLAB灰度图像缩小实验
  8. order by a desc,b desc与order by a,b desc的区别
  9. copy和mutableCopy都是浅拷贝!!!
  10. 单点登录--微服务的登录解决方案