写在前面


在使用.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. 【前端_js】javascript中数组的map()方法

    数组的map()方法用于遍历数组,每遍历一个元素就调用回调方法一次,并将回调函数的返回结果作为新数组的元素,被遍历的数组不会被改变. 语法:let newAarray = arr.map(functi ...

  2. stdin,stdout 和 STDOUT_FILENO,STDIN_FILENO

    stdin,stdout 等类型为 FILE *. STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO 等类型为 int. 使用 FILE * 的函数主要有:fopen. ...

  3. (原)ubuntu中C++调用libotrch

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/11479240.html 参考网址: https://pytorch.org/tutorials/ad ...

  4. [windows]c盘瘦身、系统盘清理临时文件、缓存等垃圾文件

    前言 虽然现在已经9102年了硬盘空间越来越大越便宜,但win系统用久了系统盘还是会渐渐变小的,公司的电脑系统盘就已经不够用了经常爆红,这个时候两个简单快速高效的办法 1.扩大系统盘空间,可以使用 w ...

  5. 极简让ingress-nginx最新版(0.25.0)跑起来

    裸步骤: 一,manadatory.yaml apiVersion: v1 kind: Namespace metadata: name: ingress-nginx labels: app.kube ...

  6. 在K8S集群中使用busybox-dig镜像,来作DNS解析分析

    以前,判断K8S里的DNS功能是否正常时,得想很多办法. 如果有了busybox-dig镜像,则作这事就简单多了. 如下命令,直接部署 kubectl run busybox -it --image= ...

  7. Win10解决修改host没有权限问题(其他文件同理) 一步都不能少哦:先添加再授权

    Step1:右键文件选择属性,选择安全,点击编辑: Step2:在弹窗中点击添加,在弹窗中点击高级: Step3:在弹窗中点击立即查找,选中当前用户,点击确定: Step4:此时选中用户已经被加入进来 ...

  8. Windbg Processes and Threads(进程和线程)窗口的使用

    在 WinDbg 中,进程和线程窗口中显示有关系统. 进程和线程正在调试的信息. 此窗口还可选择新的系统. 进程和线程处于活动状态. 如何打开进程和线程窗口 通过菜单View--->Proces ...

  9. 通过ALTER DATABASE postgres SET 解决 plv8 plv8.start_proc 问题

    通过plv8.start_proc 我们可以使用类似钩子的改变 ,方便的扩展plv8,比如基于plv8.start_proc 的require 实现 命令 ALTER DATABASE postgre ...

  10. IOCP另一种实现

    参考 https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-bindiocompletioncallback ht ...