ORM系列之Entity FrameWork详解(持续更新)

匿名 (未验证) 提交于 2019-12-02 22:10:10

一. 谈情怀

 从第一次接触开发到现在(2018年),接近五年时间了,最初阶段连接数据库,使用的是【SQL语句+ADO.NET】,那时候,什么存储过程、什么事务 统统不理解,生硬的将SQL语句传入SQLHelper类中,后来知道还要注意SQL注入,引入参数化的方式,现在回想一下,那个阶段简直Low到爆。

  (PS:现在很多场景下还是需要使用ADO.NET,所以没有最好,只有最适合)

二. ORM框架

  说起DotNet领域的ORM框架,我们想到的有EF、NHibernate、FluentData、Dapper、SQLSugar等等。那么到底什么是ORM呢?

  ② R:Relational DataBase 关系型数据库

  ③ M : Mapping 映射关系

  ① 简单性:以最简单的模式建模数据。

  ② 传达性:数据库结构被任何人都能理解的语言文档化。

  EF的核心架构:

  ③ ObjectServices:Linq to Entities 和Entity Client Data Provider 之间起到转换作用

  ⑤ ADO.Net Data Provider: 标准的ADO.Net

  ⑥ DataBase:数据库

三. 从EF的入手,深入理解ORM框架

EF(Entity FrameWork),是微软推出基于ADO.NET的数据库访问技术,它是一套ORM框架, 框架中包括了实例模型、数据模型、关系映射三部分,EF的上下文为DbContext,EF在 【.Net FrameWork】版本中最新的是 6.2.0 版本,最稳定的是6.2版本,在【.Net Core】中推出 EF Core (即所谓的“EF7”,^_^,当然已经不这么叫了)。

  EF包括三种模式:DBFirst、CodeFist、ModelFirst 。EF可以调用SQL语句、可以使用Linq查询、可以使用Lambda查询,EF还有很多高级属性,比如延迟加载、缓存属性等等,在该系列文章中都将逐一详细介绍。

  EF也有优缺点:


缺点: 在复杂的查询生成SQL脚本的效率不是很高,浪费了性能。

中的Lambda查询改为只查询指定的5个字段,发现速度由25s→3s左右,提升非常明显,当然这也很好的说明了EF的局限是在生成SQL的脚本效率上。

四. 系列章节

第一节: 结合EF的本地缓存属性来介绍【EF增删改操作的几种形式

第二节: 比较EF的Lambda查询和Linq查询写法的区别

第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery )

第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法

第五节: EF高级属性(一) 之 本地缓存、立即加载、延迟加载(不含导航属性)

第六节: EF高级属性(二)之延迟加载、立即加载、显示加载(含导航属性)

第七节: EF的三种事务的应用场景和各自注意的问题(SaveChanges、DBContextTransaction、TransactionScope)。

第八节: EF的性能篇

第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题(补充免费开源的Z.EntityFramework-Plus待完成)

第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案):

第十二节: EF的三种模式(二) 之 ModelFirst模式(SQLServer为例):

第十八节: EF的CodeFirst模式连接MySQL数据库的解决方案(未完成)

第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等):

第二十一节:ADO层次上的海量数据处理方案(SqlBulkCopy类插入和更新):

第二十二节: 以SQLServer为例介绍数据库自有的锁机制(共享锁、更新锁、排它锁等)(未完成)

第二十三节: 新的EF框架EF Core的认识(未完成)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!