写在前面


在使用.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. Apache源码编译安装脚本

      Apache是开源的的.最流行的Web服务器软件之一,它快速.可靠并且可通过简单的API扩充,将Perl/Python/PHP等解释器编译到服务器中.Apache的模块超多,以及具有运行稳定,强大 ...

  2. C++小工具

    1.Doxygen 从源代码生成文档.可以生成在线文档(HTML)和离线手册(以LATEX格式),还可以自动生成各种依赖关系图,继承关系图等.

  3. 201671030128周琳 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 掌握软件项目评审会流程:反思 ...

  4. pl/sql的tnsnames.ora文件配置

    位置:D:\app\product\11.2.0\dbhome_1\network\admin\tnsnames.ora(根据安装位置具体情况而定) zx_U=  (DESCRIPTION =    ...

  5. Windbg的快捷键

    窗口切换 可以使用以下键盘快捷方式窗口之间进行切换. 项 效果 CTRL+TAB 调试信息窗口之间切换. 通过重复使用此密钥,你可以扫描通过的所有窗口,而不考虑是否浮动. 停靠本身,或选项卡式停靠窗口 ...

  6. three.js 基础使用1

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. 从$a_n=f(n)$的角度理解数列中的表达式$a_{n+1}=\frac{k}{a_n}$

    函数周期性 前面我们学习过函数的周期性的给出方式: \(f(x+a)=f(x)\) \(\hspace{2cm}\) \(T=a\) \(f(x+a)=-f(x)\) \(\hspace{2cm}\) ...

  8. Docker入门笔记(Centos7)

    centos7 wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo vim docker-c ...

  9. SQL 变形

    需求:共有协议X份,已签XX份,待签X份 sql: select count(1) 总记录数, sum(case when XY_STATUS='1' then 1 else 0 end)待签, su ...

  10. iptables man手册翻译

    概要 iptables [-t table] -[AD] chain rule-specification [options]iptables [-t table] -I chain [rulenum ...