EF 框架的简介、发展历史;ORM框架概念
一、EF 框架简介
EF 全称是 EntityFramework 。
Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。
ORM框架(Object Relational Mapping) 翻译过来就是对象关系映射。
如果不用ORM框架,我们一般这样来使用ADO.NET进行数据库开发:
1.将ADO.NET对数据库的操作封装到一个类里SqlHelper中
2.在DAL层调用SqlHelper
3.其他层再调用DAL进行数据库操作
1.【逻辑】业务逻辑和数据存取逻辑分离开来;
2.【新增操作】 EF:一次连接,执行多条sql;SqlHelper里使用一般写法,连接又无法释放,用using,会造成多次连接重置;
3.【更新操作】 EF自动优化,只update set 有变化的字段,EF也可以很方便地只更新 实体的指定属性,产生的sql语句里的set后的字段会更少;
4.【智能提示】 用linq, lamda表达式 有智能提示,写错了编译不过;写sql语句字符串,调sqlhelper,sql语句写错一样编译通过;
5.【安全】 省去了防止sql注入的麻烦;
6.【数据库变更】使用EF,切换较方便;
7.【效率】 使用EF要比使用Ado.net开发效率高;
8.【可读性】 代码的可读性更高.
Database First(数据库优先)
如果已经拥有数据库,Visual Studio中内置的Entity Framework设计器可以自动生成一个数据模型,该模型由对应于现有数据库对象(如表和列)的类和属性组成。有关数据库结构,数据模型及映射之间的信息以XML格式存储在.edmx文件中。实体框架设计器提供了一个可视化界面,您可以使用它来显示和编辑.edmx文件。
Model First(模型优先)
如果您还没有数据库,则可以使用Visual Studio中的Entity Framework设计器在.edmx文件中创建一个模型。当模型建完后,可以执行.edmx文件来创建数据库。
Code First(代码优先)
无论您是否拥有数据库,都可以使用Code First。如果没有数据库,可以编写类和对应于表和列的属性。如果有数据库,那么Entity Framework可以生成与现有表和列对应的类和属性。如果使用Code First创建数据库,则可以使用“migration(迁移)”来将数据库部署到生产环境。当数据模型更改时,可以将更改部署到生产环境中,而不改变原有的数据
二、EF 发展历史
EF的发展历史, Linq To Sql
EF版本 |
.net framework和IDE版本 |
主要功能 |
EF(or EF3.5) |
Visual Studio 2008 SP1 (.NET 3.5 SP1) |
基本的O/R映射支持,使用DB First开发模式 |
EF 4 |
Visual Studio 2010 (.NET 4.0) |
支持POCO实体 延迟加载 提高单元测试能力 自定义的代码生成机制 支持Model First开发模式 |
EF 4.1 |
NuGet |
提供简化的DbContext接口 支持Code First开发模式 |
EF 4.1.1 |
过渡版本 |
支持Power Tools工具 |
EF 4.2 |
过渡版本 |
解决bug并优化 |
EF 4.3 |
Visual Studio 2010 (.NET 4.0) |
基于Code First开发模式的代码迁移策略 Migrations |
EF 4.3.1 |
Visual Studio 2012 (.NET 4.5) |
提供对 LocalDb 数据库的支持 |
EF 5 |
Visual Studio 2012 (.NET 4.5) |
提供对枚举类型的支持 Table-Valued functions表值函数 空间数据类型(spatial types) 整体性能优化提升 实体模型设计器、多图模型 批量导入存储过程 |
EF 6 |
Visual Studio 2013 (.NET 4.5) |
xxxxx |
EF 6.0.1 |
Visual Studio 2013 (.NET 4.5) |
xxxxx |
EF 6.0.2 |
Visual Studio 2013 (.NET 4.5) |
xxx |
EF 6.1 |
Visual Studio 2013 (.NET 4.5) |
xxx |
EF Core 的发展历史
![](/assets/blank.gif)
EF Core 8.0
下一个计划的稳定版本是 EF Core 8.0 或 EF8,计划于 2023 年 11 月发布。
三、ORM框架概念
ORM框架(Object Relational Mapping) 翻译过来就是对象关系映射。
![](/assets/blank.gif)
只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。
当前ORM框架主要有五种:Hibernate(Nhibernate),iBatis,mybatis,EclipseLink,JFinal,Linq To Sql ,EntityFramework。
ORM是通过使用描述对象和数据库之间映射的元数据,在我们想到描述的时候自然就想到了xml和特性(Attribute).目前的ORM框架中,Hibernate就是典型的使用xml文件作为描述实体对象的映射框架,而大名鼎鼎的Linq则是使用特性(Attribute)来描述的。
更多:
ef core 读取text类型慢_ef core读取大字符串字段慢
EF Core 批量写入数据使用整理(二)Z.EntityFramework.Extensions.EFCore
EF Core 批量写入数据使用整理_EF Core批量插入数据(一)
EF 框架的简介、发展历史;ORM框架概念相关推荐
- ORM框架如何选型——各大ORM框架比较
ORM框架如何选型--各大ORM框架比较 现有ORM框架或ORM相关框架主要有Hibernate,Mybatis.这两 ...
- Bee框架(速学)ORM框架(速学教程)
Bee框架(速学)ORM框架(速学教程) Bee 是一个ORM框架.关注:省时/优雅.简易.自动( Tea: Timesaving/Tasteful, Easy, Automatic) 特性.减少开发 ...
- ORM框架简介和常用ORM框架
目录 1.ORM简介 1.1什么是ORM 1.2.ORM技术的特点 3. 常用ORM框架 3.1.Hibernate 简介 优点 3.2.Mybatis 简介 功能结构 优点 1.ORM简介 1.1什 ...
- 什么是ORM框架?常用的orm框架有哪些?能否不用ORM框架直接使用SQL语句创建WebAPI?
ORM(Object-Relational Mapping,对象关系映射)框架是一种将面向对象程序中的实体类(对象)与关系型数据库中的表之间建立映射关系的技术.它允许开发人员使用面向对象编程语言来操作 ...
- 探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选
戳蓝字"CSDN云计算"关注我们哦! 作者 | Mr-Bruce 转自 | CSDN博客 责编 | 阿秃 几周前,笔者做了一个与HDFS有关的技术分享,以知识普及为目的,主要分享 ...
- 序列化框架MJExtension详解 + iOS ORM框架
当开发中你的模型中属性名称和 字典(JSON/XML) 中的key 不能一一对应时, 或者当字典中嵌套了多层字典数组时..., 以及教你如何用 MJExtension 配置类来统一管理你的模型配置, ...
- 车联网大数据框架_大数据基础:ORM框架入门简介
作为大数据开发技术者,需要掌握扎实的Java基础,这是不争的事实,所以对于Java开发当中需要掌握的重要框架技术,也需要有相应程度的掌握,比如说ORM框架.今天的大数据基础分享,我们就来具体讲一讲OR ...
- 流行的ORM框架简介
摘自 李刚 著<Java EE企业级应用实战> 目前ORM框架的产品非常之多,除了个大公司.组织的产品外,其他一些小团队也在推出自己的ORM框架.目前流行的ORM框架有如下这些产品: (1 ...
- NET主流ORM框架分析
接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 所有的OR ...
- Orm框架介绍和常见的Android Orm框架
ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中. 先介绍一下ORM的概念,以前也一直听说 ...
最新文章
- 机器学习论文推荐 | 2019 Reddit最受喜欢的5篇AI论文
- 刮刮乐html5效果擦除,利用HTML5的画布Canvas实现刮刮卡效果
- linux进程--自旋锁和互斥锁的区别(十五)
- 计算机应用基础白雪梅,白雪|
- JZOJ 3815. 【NOIP2014模拟9.7】克卜勒
- 订单操作-表结构分析与表创建
- SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍试读版
- 基于React开发范式的思考:写在Lesx发布之际
- html推箱子怎么清除走过的,第九讲:HTML5该canvas推箱子原型实现
- Windows Server 2008 R2 安全加固
- Apollo灰度发布
- 暴力推荐2:硬盘分区丢失之DiskGenius
- Android PackageInstaller:安装应用的应用,从三流Android外包到秒杀阿里P7
- 整数转罗马数字 + 逆向(Python)
- wps怎么插入目录,快速插入目录的操作步骤
- 关于运行微信小程序报错 [微信小程序开发者工具] Error: read EBADF
- chromium代码结构
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
- 苹果:第三方安装软件或导致严重隐私、安全风险
- 【独立站运营】营销邮件被判定为垃圾邮件?四个方法教你避开