当微软的WCF 大行其道,通用数据访问模型Entity Framework却稍逊一筹,有很多需要完善和进步的地方,本文对Entity Framework 架构做一下简介。  

flwoable架构剖析 framework架构_sql

    

实体框架(Entitry Framework 以下简称EF)看起来像一个有趣的技术,更强大,比LINQ to SQL 更先进。这两种技术有不同的哲学,而只是一些功能也有类似的实现。EF不仅仅是一个ORM(对象关系映射)工具。它允许开发人员查询和操作数据使用的概念模型,而不是物理存储模型。

   

ADO.NET实体框架是一个分层了的架构,抽象了数据库的关系模式,表示的是一个概念模型。

     下图描述了实体框架的层次。

是一个可以存储在一个或多个数据库的数据。

数据还是使用ADO.NET data provider 提供访问。现在提供对SQL Server的很好的访问支持,对Oracle 也提供了的访问支持。参考文章Using EF Oracle Sample Provider with EDM Designer

     Entity Data Model (EDM) : 实体数据模型包括三部分:

声明和定义实体,关联,继承,...实体类,都从这个概念模型格式中生成。

    2、存储定义语言:Store schema definition language SSDL :

存储的容器(即数据库)中存放的元数据。

    3、映射定义语言:Mapping specification language (MSL) :

将在CSDL文件中的实体和SSDL中的表建立映射关系。

EntityClient是ADO.NET托管提供支持的实体数据模型描述的访问数据。它类似于SqlClient的,OracleClient等。它提供像EntityCommand,EntityConnection和EntityTransaction几个部分。

Object Services :

该组件使您可以查询,插入,更新和删除数据,此时,实例类型的实例是作为强类型的CLR对象来表达。对象服务同时支持实体SQL和LINQ to Entities查询。

Entity SQL (ESQL) :

实体SQL是一种衍生的Transact - SQL中,用于查询和操纵实体数据模型中定义的实体。它支持继承和派生。这Object Service和Entity Client都可以执行ESQL语句。

LINQ to Entities :  是一种强类型的查询语言,用来查询实体模型中定义的实体。

附上自微软MSDN的中文图片资料,表示了ADO.NET Entity Framework 体系结构:

  

flwoable架构剖析 framework架构_linq_02