全国电子音乐交流中心

Entity Framework介绍

DotNet程序员2019-06-10 21:23:05

来自:tkb至简 - 博客园

链接:http://www.cnblogs.com/farb/p/IntroductionToEF.html(点击尾部阅读原文前往)

本篇目录

Entity Framework概要

Entity Framework是微软的Object Relational Mapper(对象关系映射器),也就是我们平常说的ORM,它可以让应用程序开发者将关系型数据作为业务模型来使用,也消除了开发者为数据访问编写的绝大多数管道代码的需要(比如使用ADO.NET)。Entity Framework提供了一个综合的、基于模型的系统,通过摆脱为所有的领域模型编写相似的数据访问代码,使得开发者创建数据访问层是如此之简单。Entity Framework的首发版本是EF3.5,是伴随着.Net Framework 3.5 SP1和VS 2008 SP1一同发布的。从那之后,EF已经进化了很多很多,当前版本是6.1.3

Entity Framework通过开启数据访问和将数据表示为概念化模型(即一系列的实体类和关系)减轻了创建数据访问层的任务。应用程序可以执行基本的CRUD操作,以及轻松地管理实体间的一对一,一对多和多对多关系。

下面是使用Entity Framework的一些好处:

  • 因为开发者不需要为数据访问编写所有需要的ADO.NET管道代码,因此这可以节省很多开发时间。

  • 我们可以使用更高级的语言(例如C#)来编写所有的数据访问逻辑而不是编写SQL查询和存储过程。

  • 因为数据库表没有高级的关系(如继承),然而领域实体是可以有的,所以业务模型(也就是概念模型)可以使用实体间的关系来适配应用领域。

  • 底层的数据存储可以相对轻松地被取代,因为所有的数据访问逻辑都呈现在应用层而不是数据层。

现在通过一张图看一下EF的架构:



从这张图上可以看到,EF是建立在ADO.NET框架之上的,它下面仍旧使用了ADO.NET方法和类来执行数据操作。

什么是ORM

几乎所有的商业软件都要存储数据,多年来,Relational Database Management System(RDBMS)一直是开发者寻求的数据存储。ORM是允许开发者使用面向对象的编程语言访问RDBMS数据的一系列技术。可用的RDBMS包括SQL Server, Oracle, DB2, MySQL等等。这些数据库系统有一些共性。每个数据库系统都支持一个或多个数据库。数据库都包含数据表,每个表都以表格的形式存储数据,并且被分成了列和行。多个表中的数据行可能相互关联。比如,一个订单Order表中的Id可能存储在一个流水表Transaction中。

过去,在像EF这样的工具出现之前,开发者都是在软件代码内部嵌套的sql语句,这是因为编程语言不能原生理解Sql。比如,要从数据库中检索数据,然后将结果作为对象操作,必须使用ADO.NET要写相当数量的代码才行。具体来说,先定义一个存储person的类,然后打开数据库连接,创建具有查询文本的命令,再执行该命令的reader,然后对该reader的结果进行迭代,最后再使用来自reader的数据填充Person类的实例。你会看到,这里包含了很多步骤,而且更重要的是,这样写的代码维护成本很高。比如,数据库中改了一个列名,这样还要去代码中进行相应更改,否则运行时就会抛出异常。此外,我们数据库中存储的是标量值数据(int,string等),但我们的目标是一个对象或者对象图。这样看来,这种访问数据的方式有很多问题。