当微软的WCF 大行其道,通用数据访问模型Entity Framework却稍逊一筹,有很多需要完善和进步的地方,本文对Entity Framework 架构做一下简介。
实体框架(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 体系结构: