Entity Framework是以ADO.NET为基础,面向数据的“实体框架”。如下简称EF。mysql
它利用了抽象化数据结构的方式,将每一个数据库对象都转换成应用程序对象 (entity),数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型彻底的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。算法
我的认为百科上对EF一句比较经典的解释为:让上层的应用程序码能够如面向对象的方式般访问数据。 sql
过去咱们对数据库都是直接读取,业务数据中都是使用DataSet、DataTable等来传值,形成代码丑陋,严重脱离了OO的思想。数据库
举个例子,当向数据库中存储时,实体框架主要是用来帮助咱们把一个个对象存储到数据库中去(即经过对象与数据库“打交道”),只要把对象交给实体框架,不用本身写SQL语句,它会帮助咱们自动生成SQL语句,这里生成的SQL语句经过ADO.net发送到数据库中去,即操做数据库仍是经过ADO.Net,因此本文首句说到了“EF是以ADO.NET为基础,面向数据的‘实体框架’ ”。编程
具体过程能够用下图表示:数据结构
如上图,假如要把内存中的两个实体Student和Teacher存储到数据库中,EF会自动将实体经过EDM的映射,将一个实体做为一条记录存入到数据库中去,那EF是如何判断哪一个实体应该存到哪张表里,哪一个属性应该存到哪一个字段里呢?这就是映射的强大所在:框架
在VisualStudio中,映射经过 .edmx 文件来体现,.edmx文件的本质是一个 XML 文件,它用于定义概念模型、存储模型和这些模型之间的映射。编程语言
好比在上例的映射中,能够经过相似于以下形式来体现:spa
1 <!-- CSDL 此处表示实体 --> 2 <Entity Name="Student"> 3 <Pro Name="StuName"> 4 <Pro Name="StuSex"> 5 <Pro Name="StuAge"> 6 </Entity> 7 8 <!-- SSDL 此处表示数据库表 --> 9 <Table Name="Student"> 10 <Col Name="StuName"> 11 <Col Name="StuSex"> 12 <Col Name="StuAge"> 13 </Table> 14 15 <!-- C-S 此处表示实体与数据库表的映射关系 --> 16 <Relation Entity="Student" Table="Student"> 17 <Rel ProName="StuName" ColName="StuName"> <!--实体中StuName属性对应表中StuName字段--> 18 <Col ProName="StuSex" ColName="StuSex"> 19 <Col ProName="StuAge" ColName="StuAge"> 20 </Relation>
上述代码并非 .edmx文件中的确切格式,此处为了简单说明,读者能够看作是“伪代码”,后面将会简单介绍 .edmx 文件建立和基本格式。.net
经过上面能够了解到,从读代码的角度来讲,EF可使咱们在不须要了解数据结构的状况下就能够很好地理解;从实现的角度来讲,EF可使存储“模型化”,就如同将不少个对象存储在一个List中似的,向数据库表里存储的都是一个个实例,从数据库中取到的也都是一个个实例。程序如此跟数据库的交互,和OO化的代码相互对应,容易“对接”。