Entity FrameWork介绍

1、Entity FrameWork概述

  Entity Framework(简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来,ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。

2、ORM

  在介绍EF之前,首先介绍一下ORM(Object Relational Mapping的简称,对象关系映射)

  广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。
  
  狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要要了解任何关系型数据库存储数据的实现细节.
Entity FrameWork介绍_第1张图片
  。

3、EF介绍

Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以 及支持 Entity Framework 的数据提供者 (provider),让数据访问的工作得以顺利与完整的进行。

  (1) 概念层:负责向上的对象与属性显露与访问。

  (2) 对应层:将上方的概念层和底下的储存层的数据结构对应在一起。

  (3) 储存层:依不同数据库与数据结构,而显露出实体的数据结构体,和 Provider 一起,负责实际对数据库的访问和 SQL 的产生
  EDM 设计器
  Entity FrameWork介绍_第2张图片

EF框架在一下三种情况下有用
首先,如果您已经有现有的数据库,或者想要在应用程序的其他部分之前设计数据库。
其次,您需要关注您的域类,然后从您的域类创建数据库。
第三,您想在可视化设计器上设计数据库模式,然后创建数据库和类。
如下图所示:
Entity FrameWork介绍_第3张图片
我们概括为如下
1、Database First(数据库优先)
2、Model First(实体优先)
3、Code First(代码优先)

这里介绍一下这三种方法的联系:
 1. Database First是基于已存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。也就是从一个数据库开始,然后生成实体框架和相应代码。

 2. Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。

 3. Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象。但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。

下面分析这三种方式的优缺点:

  Database-First开发模式指以数据库设计为基础,并根据数据库自动生成实体数据模型,该模式明显性能会差点,但是它很适合初学者,或者是比较急的小型项目。还有一点,我们在做项目时可能不容易体会到它的好处,但如果做数据库结构比较成熟稳定的产品时,我们可以很轻松的使用数据库生成实体模型,从而实现快速开发。

  Model First开发模式是指从建立实体数据模型入手,并依据模型生成数据库,从而驱动整个开发流程。该模式也就是业界流行的面向领域的编程模式,它的优点在于,程序员可以用与设计建模相同的思维来进行代码编写,更符合面向对象的思想。Model First与Database First是互逆的,但最终都是输出数据库和实体数据模型。 缺点是设计模型时完全了解数据库的结构,在模型中手动添加表关系,并且生成的脚本有点不简洁。

 Code Only
  Code Only开发模式也叫Code First开发模式,指的是程序员完全通过手动编码,就可以使用Entity Framewokr技术来实现数据访问。该模式的优点在于性能比较好,且代码较少冗余,支持POCO(Plain Old CLR Objects,简单传统CLR对象),代码整洁,程序员对代码的控制也更灵活自如,不过它的缺点也有很多,由于都是代码编写的,比如更新数据库。

4、.NET平台下其他ORM

除了EF以后,ORM框架还有NBear、NHibernate(从Java版移植来的Net版)、GentleNet,IBatis.Net和SubSonic

5、EF的历史版本

Entity FrameWork介绍_第4张图片

参考资料:
1、Entity Framework Version History
2、Entity Framework (EF) Documentation
3、Net环境下比较流行的ORM框架对比
4、What is Entity Framework?
5、Entity Framework 基础
6、ASP.NET MVC入门到精通——Entity Framework入门
7、Modeling and Mapping a Conceptual Model

你可能感兴趣的:(Entity,FrameWork)