>

Entity Framework Code First 系列 1

- 编辑:555彩票 -

Entity Framework Code First 系列 1

    前不久看到新闻,微软公司准备对Entity Framework 框架进行开源,随着开源后肯定会有更多同学加入到学习Entity Framework 的队伍中来,因此将我对Entity Framework 的一些浅析的理解写出来,希望可以让大家一起来讨论,更重要的是自己也可以通过这个过程更加熟悉EF框架,长话短说先上提纲。

本系列内容提纲

什么是Entity Framework

  Entity Framework是一个对象关系映射O/RM框架。

  Entity Framework让开发者可以像操作领域对象(domain-specific objects)那样操作关系型数据(relational data)。

  Entity Framework减少了大部分通常需要编写的数据操作代码。

  Entity Framework中可以使用LINQ来查询数据,使用强类型(strongly typed objects)来检索和操作数据。

  Entity Framework提供了以下服务,使开发者可以更加侧重于程序业务逻辑,而非数据访问的基本操作。

  1. 状态或变更跟踪(change tracking)

  2. 身份或主键识别(identity resolution)

  3. 懒加载(lazy loading)

  4. 查询翻译(query translation)

  Entity Framework是ADO.NET的加强,它给开发者提供了数据库访问和存储的自动化机制。

  Entity Framework是一个开源框架。

 

  • Code First --- Hello World
  • 约定及配置
  • Entity Framework & 数据库

什么是O/RM

  O/RM是一种工具,可以自动地把领域对象数据存储到关系型数据库(如MS SQL Server),而不需要大量的编码。

  O/RM包含三个重要的部分:

  1. 领域对象(Domain class objects):我们定义的类。

  2. 关系型数据库对象(Relational database objects):数据库表,视图,存储过程等。

  3. 映射信息(Mapping information):领域对象与关系型数据库对象之间转换的信息。

  O/RM允许开发者把数据库设计和领域对象设计独立开,让程序更具有可维护性和可扩展性。

  它还提供了基本的增删改查的功能,开发者不需要手动再编写这部分代码。

  一个典型的数据库与应用程序的O/RM交互如下图所示:

  555彩票官网首页 1

 

Code First 前世今生

Entity Framework的结构

  Entity Framework的总体结构如下图所示。

  555彩票官网首页 2

 

  EDM(Entity Data Model):EDM包含三个主要的部分 - 概念模型(Conceptual model)、存储模型(Storage model)和映射(Mapping)。

  1. Conceptual model:概念模型包含了模型的类定义,以及类之间的关系。概念模型的设计独立于数据库表设计。

  2. Storage model:存储模型是数据库设计模型,包含了数据库表,视图,存储过程,以及它们的之间的关系和键。

555彩票官网首页,  3. Mapping:映射包含了概念模型映射到存储模型的相关信息。

  LINQ to Entities:一种基于对象模型编写的查询语言,它将返回概念模型中设计的实体。

  Entity SQL:另一种和LINQ to Entities相似的查询语言,但是它们还是有一些差异的,开发者还是需要单独花时间去学习它。

  Object Service:数据库数据访问的主要入口,主要职责是物化(materialization),把Entity Client Data Provider返回的数据转换成实体对象结构。 

  Entity Client Data Provider:把LINQ to Entities或Entity SQL转换成数据库SQL。和ADO.Net Data Provider进行通讯,发送或检索数据库数据。

  ADO.Net Data Provider:ADO.Net Data Provider使用标准的ADO.Net和数据库进行交互。

 

  .NET 3.5 和 Visual Studio 2008 带来了 Entity framework 的第一个迭代版本,给开发人员带来了反向工程的能力,将数据库映射成领域模型可以通过visual studio 设计器来查看数据库及自定义数据库模型——DataBase-First 模式. 在.NET4 和 visual studio2010 中entity framework 出现了第二个版本即Entity framework 4 ,在这个版本中我们可以通过 visual studio 设计器来创建基于EDMX文件的领域模型并同步到数据库,这样让开发者将关注的焦点放到领域模型上而不是数据库设计——Model First 模式。同时也引入另一种模式 Code First,定义的领域模型不在使用之前的EDMX来描述而是通过代码文件。在Code First 中你可以自己定义POCO文件而不在使用设计器或其他的。

Entity Framework的开发模式

  Entity Framework提供了三种开发模式:

  1. Code First

  2. Database First

  3. Model First

  

  Code First:

  555彩票官网首页 3

  在Code First的开发模式中,要避免使用视觉模型设计器(EDMX),一般是先编写POCO类,然后根据这些类去生成数据库。

  那些遵循领域驱动开发(DDD)原则的开发者,更倾向于一开始先编写自己的领域类,然后再生成数据库来实现数据持久化。

 

  Database First:

   555彩票官网首页 4

  通过已有的数据库来生成EDMX(Entity Data Model)的开发模式就是Database First的开发模式。

  如果数据库变更了,EDMX(Entity Data Model)也会更新。同时,Database First也支持存储过程,视图等。

 

  Model First:

   555彩票官网首页 5

  Model First是Code First和Database First的一种折中开发模式,它提供视觉模型设计器(EDMX)来设计数据模型,然后根据数据库模型来生成数据库以及领域类。

  

  总结:

  1. Code First是先编写领域类,然后根据类来生成数据库,无视觉模型设计器(EDMX)。

  2. Database First是根据数据库生成视觉模型设计器(EDMX)及领域类。

  3. Model First是先生成视觉模型设计器(EDMX),然后根据EDMX生成数据库及领域类。

 

本文由新闻发布,转载请注明来源:Entity Framework Code First 系列 1