ORM框架之一EF理解性

1.ORM概念

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

1.2,概念理解

O(Object)

它是程序设计中的对象,具体说来,也就是在开发过程中,所建立的Model层,在Model层中,每一个类都描述了一个对象,O就当理解为model层

R(Relational )

它是程序设计中的关系数据库(ORM框架,一般来说对应的是关系型数据库),具体说来,它其实是描述作为咱们数据持久层里面的表单。也就是说,它实际上是指咱们设计好的数据库对象,每张表单的字段、主外键、索引等。

M(Mapping)

比起映射,或者说直接理解为地图,更能让我们接受。想象地图在我们生活中是用来干嘛的?它能帮助我们找到目的地。那么,在程序中,mapping文件是用来干嘛的呢?这就涉及到ORM框架的工作原理,我们将在第二部分进行介绍。

图像理解:

二、EF工作原理

ORM框架最基本的工作原理,其实就是通过操作O(对象)去实现操作R(表单),而他们之间的连接或者说桥梁,就是Mapping(映射)。

下面,主要介绍一下产品EF的工作原理:

2.1,EF框架示意图

2.2,原理分析

首先,基于最底层的是SSDL,与之对应的是ADO.net的存储模型(数据库服务器)驱动。这里进行了数据库服务驱动,以及数据库的描述。

然后,基于中间层的是CSDL,与之对应的是EntityClient的实体数据驱动,在这里确定了ORM框架中的驱动形式,EF中使用EF驱动,ORM其他产品,都有自己对应的驱动。在这里面,是对于EF中的实体对象进行了描述。

最后,基于最上层的是对象元数据和对象服务,包含了对于对象的一系列操作。

那么,EF工作的时候,它通过最上层的对象服务,去操作对象元数据,而后过渡到EF的数据驱动,将最上层的操作,通过CSDL规则文件进行描述。然后紧接着,借助MSL映射规范,将CSDL描述的的内容,对应到SSDL(数据库表单),最后通过ADO.net的数据驱动,将SSDL描述的内容读写到具体的数据库。到最后进行读写操作的,一定会是数据库服务驱动所要求的语言,这一个过程,也是使用linq toSQL的一个具体流程。

三、EF的优缺点

3.1,优点

隐藏了数据访问细节,“封闭”的通用数据库交互,这是ORM的核心。它使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。

ORM使我们构造固化数据结构变得简单易行,不用将模型操作转化为一条一条的SQL语句。

3.2,缺点

EF牺牲了性能,虽然在于SQL语句转化的时候,耗费的时间非常小,但是它仍然远远没有直接执行SQL语句速度快。

对于一种复杂的查询,EF显得力不从心。最为显著的一个就是,多表联合查询。

原文地址:https://www.cnblogs.com/SDdemon/p/9398994.html

时间: 2024-10-09 09:21:47

ORM框架之一EF理解性的相关文章

ORM框架中EF的作用和特点

存放于System.Linq.QueryAble 静态类中 并且所有的扩展方法扩展自 IqueryAble<TSource>泛型接口上 用途: 接收lambda表达式 利用EF生成对应的sql脚本   发送给ado.net   ado.net会发送给数据库执行

Mego(2) - NET主流ORM框架分析

接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM框架实现 EF功能最强的ORM EF与EFCore缺陷 ORM框架工作原理 所有的ORM框架的工作原理都离不开下面这张图,只是每个框架的实现程度不同但是最终的目的是相同的. 如果是一个ORM框架那么一定会有上图中蓝色部分的这几个元素,无论是增删改查对于ORM一定是以对象为起点,使用对象构造出LINQ

常见ORM框架理解

JAVA编程免不了和数据库打交道,那么如何高效便捷地操作数据库,也是一个需要而对的问题,原生的基于JDBC的方式当然是非常低效,而且要写一大堆无用的模板代码,不值得选取.好在我们不需要重复的造轮子,目前已经有很多优秀的ORM框架可供使用了,常见的比如Hibernate, Mybatis,TopLink等,JAVA EE3.0规范中提出的JPA,同样也是十分的好用,所以有时面试官也会问一下些和这个相关的面试题,下面整理一些个人遇到,或者网上经常看到的一些面试题 . 一.什么是JPA,为什么要有JP

抛弃EF,20分构建一个属于自己的ORM框架

相信EF大家都不陌生了,因为数据库表跟程序实体是一一对应的原因,我们能够通过lambda这种函数式的编程方式进行操作数据库,感觉非常清晰明了.与我们直接写SQL相比,lambda是强类型,拥有更好的扩展性,伸缩性,而且编程更加的方便,快捷..下面我们就基于Expression和lambda来与大家构建一个属于自己的ORM框架. 思路的话很简单,就是将lambda转换成我们对应的数据库所需的查询条件,然后执行查询,再将结果以反射的方式封装成List<T>返回出去. Expression 大家使用

ORM框架EF(一)

应用程序和数据库采用Tcp协议通讯 ORM框架有: NHibernate ,Dapper ,Mybatis 底层是 ADO.Net 好处: 1.面向对象 2.没有sql减少学习成本,快速开发 3.编译检测会更有用(写sql,字段改了,漏改sql就会异常) 3.有编译检测(改了数据库字段,必须修改,否则报错)? 4.支持延迟特性,缓存 缺陷: 1.sql是自动生成,比较僵化,不确定是否使用索引 2.需要很多反射,对时间和空间有损耗(类,属性,特性) 3.比较复杂的查询不合适,用SQL 或 存储过程

[python] 理解metaclass并实现一个简单ORM框架

metaclass 除了使用type()动态创建类以外,要控制类的创建行为,还可以使用metaclass. metaclass,直译为元类,简单的解释就是: 当我们定义了类以后,就可以根据这个类创建出实例,所以:先定义类,然后创建实例. 但是如果我们想创建出类呢?那就必须根据metaclass创建出类,所以:先定义metaclass,然后创建类. 连接起来就是:先定义metaclass,就可以创建类,最后创建实例. 所以,metaclass允许你创建类或者修改类.换句话说,你可以把类看成是met

MVC+EF 理解和实现仓储模式和工作单元模式

MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generic Repository in ASP.NET MVC using Entity Framework 文章介绍 在这篇文章中,我们试着来理解Repository(下文简称仓储)和Unit of Work(下文简称工作单元)模式.同时我们使用ASP.NET MVC和Entity Framework 搭

ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.6

摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.NET.分层架构.ORM及反射+工厂设计模式等.支持.Net1.1及以上版本,可用于Oracle.SqlServer.Sybase.DB2.MySQL.Access.SQLite.PostgreSQL.DM(达梦).PowerDesigner文件.Informix.Firebird.MaxDB.Exc

ORM框架的设计

(开头先从网上抄些ORM的介绍) 什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射.ORM也可理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁.这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法. 为什么需要ORM 面向对象的程序设计语言,代表了目前程序设计语言的主流和趋势,其具备非常多的优势,比如: 1. 面向对象的建模.操作.