文献索引
此文章完全根据微软官方文档,经过我自己的翻译而来。若有不准确之处,敬请指导。
Entity Framework
EF框架提供了一些列面向数据(data-oriented)的软件应用技术。EF框架使得程序员以特定域内的对象和属性的方式操作数据,例如 customers 和 customer addresses,完全不用关心它们在数据库表和列架构中是如何存储的。有了EF框架,开发者能以高度抽象的方式操作数据,与传统开发相比,它能够以最少的代码生成和维护 data-oriented 的应用。
预览(Overview)
EF框架是一个对象-关系映射器(object-relational mapper, ORM),它降低了.NET 框架中面向对象和关系型数据库的不匹配。 EF使得开发者主要同APP的概念模型(conceptual model)打交道,通过使用熟悉的面向对象技术。在EF框架中,你可以使用在特定作用域中的对象和属性,例如 custormers 和 customer addresses, 而完全不用考虑下层的用于持久化数据的数据库的表和列。开发者可以直接依靠于概念模型(conceptual model)来处理数据介入(data access),EF框架负责翻译这些操作为关系的数据库的行为。
在EF框架应用中,主要有两层:
- 模型层 (The modeling layer)
- 对象层 (The object layer)
其中,模型层包括三个组件:
1. 概念模型。包括特性域的视图类型和关系,它们是基于EDM(Entity Data Model )的 。
2. 数据库存储层。 一个数据库架构(schema)来定义数据库表和关系。
3. 1和2层间的映射。概念模型和数据库架构间的映射组件。
EF 用映射组件(mapping component)将依赖于实体对象的操作,例如,创建(create),读取(read),更新(update),删除(delete),简称为(CRUD),转化为等同于数据库中的操作。
EF**对象层**(object layer)包括类型化的CLR对象(common language runtime),它发射定义在概念模型中的实体(Entities)和关系(relationships)。这些对象能被程序语言辨识。类型的准确格式是由你提供给EF的配置控制的。
映射和建模(Mapping and Modeling)
- 有不同的方法来生成上述提到的映射层( mapping layer)和对象层(object layer): 你可以用EF工具从现有的数据库中生成你的模型。这种方法产生了一个默认的概念模型和映射,然后你可以通过使用EDM(Entity Data Model)Designer实现定制。第二种方法,通过使用EDM设计器,用图形化地方式创建一个概念模型,然后从这个模型中通过工具建立元模型,最后基于元模型创建一个数据库。
- 第三种方式,用Code first方式在代码中创建概念模型,在代码中你定义了各种对象类型和定义一些配置,EF基于这些代码推断出概念模型。然后,根据代码,映射元模型(mapping metadata) 在运行时被生成。模型既可以被映射到已经存在的数据库中,也可以从模型映射创建一个完全新的数据库。
同对象一起工作(Working with Objects)
EF的对象层(object layer)让你能做如下事:
- 依靠概念模型进行查询操作;
- 具体化从以Objects的数据源返回的数据;
- 追踪对象的改变;
- 传播对象的改变再次返回到数据源;
- 绑定对象到控件。