EF 架构
ADO.NET Entity Framework: 提供关系数据库架构到对象的映射;
架构
ADO.NET Entity Framework分Storage Provider ,Mapping Layer ,Object Services,LINQ to Entities 四层。
ADO.NET Entity Framework分Storage Provider ,Mapping Layer ,Object Services,LINQ to Entities 四层。
Storage Provider 负责直接和数据源通讯,支持的数据库 Sql Server
Mapping Layer 数据库概念层和逻辑层的映射。
Mapping Layer 数据库概念层和逻辑层的映射。
通过 EDM 模型和 mapping provider ,应用程序将构建在更高层次的 EDM 模型抽象层次上。同时,在应用程序中将不再使用本地数据库的查询语言比如(T-sql), 取 而代之的将是 Entity SQL 。
Object Services Object Services 的目标是消除数据和应用程序代码风格的不匹配
ADO.NET 允许将查询结果呈现为行和列记录,同时也可以呈现为 .NET 对象。该层还包括了更多被 O/R mapping 框架支持的高级的服务,比如身份认证,跟踪对象状态变化,并行性检查以及处理更新。
LINQ to Entities 将 Entity Framework 与 LINQ 项目集成,以提供面向对象编程语言适合自己特点的查询功能。
LINQ to Entities 这一层依赖于 object services 和 mapping layer 这两层。
LINQ to Entities 这一层依赖于 object services 和 mapping layer 这两层。
EDM(Entity Data Model)
CSDL(Conceptual Schema Definition Language):概念层结构定义了对象模型 (Object Model),让上层的应用程序码可以如面向对象的方式般访问数据
SSDL(Storage Schema Definition Language) : 存储层结构是负责与数据库管理系统(DBMS)中的数据表做实体对应 (Physical Mapping),让数据可以输入正
确的数据源中,或者由正确的数据源取出
MSL(Mapping Schema Language ): 对应层结构负责将上层的概念层结构以及下层的存储体结构中的成员结合在一起,以确认数据的来源与流向
Entity Client
Entity Client 是 ADO.NET Entity Framework 中的原生客户端 (Native Client),它的对象模型和 ADO.NET 的其他客户端非常相似,一样有 Connection, Command, DataReader 等对象,但最大的差异就是,它有自己的 SQL 指令 (Entity SQL),可以用 SQL 的方式访问 EDM,简单的说,就是把 EDM 当成一个实体数据库。
ObjectContext:定义了从实体对象到数据库的映射
由于 Entity Client 太过于制式,而且也不太符合 ORM 的精神,因此微软在 Entity Client 的上层加上了一个供编程语言直接访问的接口,它可以把 EDM 当成对象般的访问,此接口即为 Object Context (Object Service)。
DbContext:
对象查询:LINQ to Entities, Entity SQL, Query Builder; LINT to Entities
Object Context 将 EDM 的访问改变为一种对对象集合的访问方式,这也就让 LINQ 有了发挥的空间,因此 LINQ to Entities 也就由此而生,简单的说,就是利用 LINQ 来访问 EDM,让 LINQ 的功能可以在数据库中发挥。
Stay hungry, stay foolish