写在前面


在使用.net mvc 开发的时候。为了高效的开发,我们常常会搭配ORM框架使用。

而Entity Framework正是微软开发的一种ORM框架。一般情况下,我们很少用全称,

而是直接用EF。因为都是微软的产品,所以通常它和MVC是黄金搭档。

什么是Entity Framework


全称ADO.NET Entity Framework,简称为EF。优点是能高效的开发,缺点就是会损害性能。

所以,如果业务太过与庞大,对性能要求很高的。不建议使用EF进行开发。

可以使用轻量级的ORM框架进行开发。

EF的优缺点


1.优点

【1】.极大地提高开发效率。写代码效率非常高,自动化程序高。
【2】.支持多种数据库(mysql,oracle,sqlserver)。
【3】.强劲的映射,可以支持可视化操作。
【4】.提供Visual Studio 集成工具,进行可视化操作。

2.缺点

【1】.EF性能不好,性能有损耗。在复杂查询的时候生成的SQL脚本效率不是很高。
【2】.数据库端性能损耗是一样的,但是在将对象状态转换成SQL语句时,会损失性能。

如何理解ORM


  • 广义上,它是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。

  • 狭义上,它是基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。在持久化一个OO对象不需要了解任何关系型数据库存储数据的实现细节。

  • 在关系型数据库的世界里没有继承关系。

  • 在面向对象的世界里,我们使用单向关联。 然鹅,在关系型数据库的世界里,我们使用外键双向关联。

  • ORM是对象世界和关系世界的一座桥梁,通过映射关系,简化了大量操作数据库的代码。

EF执行的原理


EF执行的原理是 反射和特性

【1】首先,EDM利用特性来标识实体映射到具体数据库中的TableName 属性对应的具体表的ColumnName,还有主键,外键,默认值等,都是特性来标识的。

【2】然后通过反射技术,从EF中edm元数据库中获取数据库表的结构的描述

【3】再根据增删改查操作方法,就可以产生对应的SQL语句。

【4】然后发送个ADO.NET,

【5】最终由ADO.NET 负责从数据库中读取数据,返回给EF。

Entity Framework 学习系列(1) - 认识理解Entity Framework的更多相关文章

  1. Entity Framework 学习系列(3) - MySql Code First 开发方式+数据迁移

    目录 # 写在前面 一.开发环境 二.创建项目 三.安装程序包 四.创建模型 五.连接字符串 六.编辑程序 七.数据迁移 写在最后 # 写在前面 这几天,一直都在学习Entity Framework ...

  2. Entity Framework 学习系列(4) - EF 增删改

    目录 写在前面 一.开发环境 二.创建项目 三.新增 1.单表新增 2.批量新增 3.多表新增 四.编辑 1.先查询,后编辑 2.创建实体,后编辑 五.删除 写在前面 在上一小节中,学习了如何 通过C ...

  3. Entity Framework 学习系列(2) - MySql Database First 开发方式

    目录 写在前面 环境 下载MySQL连接工具 创建Databse First 1.创建控制台 2.创建数据库 3.安装 MySQL.Data 和MySQL.Data.Entity 3.在项目中添加数据 ...

  4. Entity Framework 学习系列(5) - EF 相关查询

    目录 写在前面 一.使用Stopwatch 查询执行效率 二.简单查询 1.Linq写法: 2.Lambda表达式写法: 三.条件查询 1.Linq 写法 2.lambda 写法 四.聚合函数 1.L ...

  5. Entity Framework Core系列之什么是Entity Framework Core

    前言 Entity Framework Core (EF Core)是微软推荐的基于.NET Core framework的应用程序数据访问技术.它是轻量级,可扩展并且支持跨平台开发.EF Core是 ...

  6. Entity Framework 学习

    Entity Framework 学习初级篇1--EF基本概况 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry. ...

  7. Entity Framework 学习笔记(2)

    上期回顾:Entity Framework 学习笔记(1) Entity Framework最主要的东西,就是自己创建的.继承于DbContext的类: /// <summary> /// ...

  8. MVC5 Entity Framework学习

    MVC5 Entity Framework学习(1):创建Entity Framework数据模型 MVC5 Entity Framework学习(2):实现基本的CRUD功能 MVC5 Entity ...

  9. Entity Framework Code First学习系列目录

    Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...

随机推荐

  1. 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列

    原文:https://mp.weixin.qq.com/s/lpsQ3dEZHma9H0V_mcxuTw 一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群 ...

  2. PHP中md5()函数绕过

    PHP md5()函数的简单绕过方法,该篇作为学习笔记简单记录一下.   例题   例题链接: http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php   ...

  3. activiti 工作流动态设置指定节点任务人、责任人、组的实现方式

    首先给大家看一下我的流程图: 流程文件leaveBill.bpmn <?xml version="1.0" encoding="UTF-8"?>&l ...

  4. linux 利用 crontab 实现 程序开机启动/crontab任务的多种实现方法

    方法一,用户登录服务器,直接修改: crontab -e 然后添加: @reboot [nohup] {命令} ctrl + O ctrl + x 方法二,指定用户进行修改: sudo crontab ...

  5. 没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限

    今天朋友在创建新栏目时出现了一个无法生成的错误,提示没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限,其实这个相对比较 ...

  6. Game Publisher

    “Amazon Appstore https://developer.amazon.com/why-amazonApple Store https://developer.apple.com/prog ...

  7. xshell跳转设置 Xshell代理设置

    本机------->A(中转)------>B(目标服务器) 本机---------XXXXX------>B(目标服务器) 本机无法直接连接B服务器 第一步:本机连接中转服务器A, ...

  8. Pandas | 22 时间差

    时间差(Timedelta)是时间上的差异,以不同的单位来表示.例如:日,小时,分钟,秒.它们可以是正值,也可以是负值.可以使用各种参数创建Timedelta对象,如下所示 - 字符串 通过传递字符串 ...

  9. 洛谷P1230智力大冲浪 题解

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...

  10. Softmax与Sigmoid函数的联系

    译自:http://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/ 本文的原始目标是探索softmax函数与sig ...