Entity Framework是以ADO.NET为基础,面向数据的“实体框架”。以下简称EF。
它利用了抽象化数据结构的方式,将每一个数据库对象都转换成利用程序对象 (entity),数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型,如此让程序设计师能用最熟习的编程语言来调用访问。
个人认为百科上对EF1句比较经典的解释为:让上层的利用程序码可以如面向对象的方式般访问数据。
过去我们对数据库都是直接读取,业务数据中都是使用DataSet、DataTable等来传值,造成代码丑陋,严重脱离了OO的思想。
举个例子,当向数据库中存储时,实体框架主要是用来帮助我们把1个个对象存储到数据库中去(即通过对象与数据库“打交道”),只要把对象交给实体框架,不用自己写SQL语句,它会帮助我们自动生成SQL语句,这里生成的SQL语句通过ADO.NET发送到数据库中去,即操作数据库还是通过ADO.NET,所以本文首句说到了“EF是以ADO.NET为基础,面向数据的‘实体框架’ ”。
具体进程可以用下图表示:
如上图,假设要把内存中的两个实体Student和Teacher存储到数据库中,EF会自动将实体通过EDM的映照,将1个实体作为1条记录存入到数据库中去,那EF是如何判断哪一个实体应当存到哪张表里,哪一个属性应当存到哪一个字段里呢?这就是映照的强大所在:
在VisualStudio中,映照通过 .edmx 文件来体现,.edmx文件的本质是1个 XML 文件,它用于定义概念模型、存储模型和这些模型之间的映照。
比如在上例的映照中,可以通过类似于以下情势来体现:
通过上面可以了解到,从读代码的角度来讲,EF可使我们在不需要了解数据结构的情况下就能够很好地理解;从实现的角度来讲,EF可使存储“模型化”,就犹如将很多个对象存储在1个List中似的,向数据库表里存储的都是1个个实例,从数据库中取到的也都是1个个实例。程序如此跟数据库的交互,和OO化的代码相互对应,容易“对接”。
下一篇 MongDB学习资料大集合