EF框架学习分享一

一、什么是EF框架ORM框架 ?

     EF 全称是 EntityFramework 。Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。

    ORM框架(Object Relational Mapping) 翻译过来就是对象关系映射。

 

 

二、EF实体框架整体架构:

 

架构组件:

EDM(实体数据模型): EDM由三个主要部分组成 - 概念模型,映射和存储模型。

Conceptual Model:概念模型包含模型类及其关系。这将独立于您的数据库表设计。

Storage Model:存储模型是包括表,视图,存储过程及其关系和密钥的数据库设计模型。

Mapping:映射由有关概念模型如何映射到存储模型的信息组成。

LINQ to Entities: LINQ to Entities是一种用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。你可以在这里使用你的LINQ技能。

Entity SQL:实体SQL是另一种查询语言(仅适用于EF 6),就像LINQ to Entities一样。然而,这比L2E稍微难一些,开发者需要单独学习。

ObjectServices:对象服务是访问数据库中的数据并将其返回的主要入口点。对象服务负责实现,这是将从实体客户端数据提供者(下一层)返回的数据转换为实体对象结构的过程。

Entity Client Data Provider:此层的主要职责是将LINQ-to-Entities或实体SQL查询转换为底层数据库可以理解的SQL查询。它与ADO.Net数据提供者通信,而ADO.Net数据提供者又从数据库发送或检索数据。

ADO.Net Data Provider:该层使用标准的ADO.Net与数据库进行通信。

 

三 、EF 的优势(与 ADO.NET 的对比)

https://www.cnblogs.com/best/p/7714500.html (ADO详解链接)

如果不用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.【可读性】 代码的可读性更高.

Guess you like

Origin blog.csdn.net/qq_42428269/article/details/114494124