您的位置:首页 > 数据库

Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架

2011-04-28 11:03 555 查看
长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情。

  因此在信息业中有很多人都在研究如何将程序设计模型和数据库集成在一起,对象关系对应 (Object-Relational Mapping) 的技术就是由此而生,像Hibernate或NHibernate都是这个技术下的产物,而微软官方一直没有推出类似的框架,依旧依靠ADO.NET这个传统的数据访问工具。

  估计微软也听到了来自程序员的抱怨,于是从一个ObjectSpace(ObjectSpace最早在2005年?被提出,可以让应用程序可以用完全对象化的方法连接与访问数据库,其技术概念与NHibernate相当类似)的概念最后在2008年随.net framework 3.5 SP1发布了ADO.NET Entity Framework,一个附带有图形化设计器的面向实体数据库访问框架。

  

  Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以及支持 Entity Framework 的数据提供者 (provider),让数据访问的工作得以顺利与完整的进行。ADO.NET
Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层:

  

  (1) 概念层:负责向上的对象与属性显露与访问,让上层的应用程序码可以如面向对象的方式般访问数据。这部分由设计器自动生成,表现在一系列的类。

  

  (2) 对应层:将上方的概念层和底下的储存层的数据结构对应在一起,负责将上层的概念层结构以及下层的储存体结构中的成员结合在一起,以确认数据的来源与流向。这部分由描述语言实现,可以自由修改。

  

  (3) 储存层:依不同数据库与数据结构,而显露出实体的数据结构体,负责与数据库管理系统 (DBMS) 中的数据表做实体对应 (Physical Mapping),让数据可以输入正确的数据来源中,或者由正确的数据来源取出。

 

对于访问者(上层的逻辑)而言,可以使用三种方式访问EDM:Entity Client,Object Context 以及LINQ

  1. Entity Client(数据库操作访问方式)

  Entity Client是 ADO.NET Entity Framework 中的本地用户端 (Native Client),它的对象模型和 ADO.NET 的其他用户端非常相似,一样有 Connection, Command, DataReader 等对象,但最大的差异就是,它有自己的 SQL 指令 (Entity SQL),可以用 SQL 的方式访问 EDM,简单的说,就是把 EDM 当成一个实体数据库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: