# 零、简介

对象/关系映射器的存在是为了弥合面向对象编程和关系数据库之间的鸿沟。表单以不太具体为代价，抽象出特定于数据库的技术细节，并对面向对象开发人员隐藏那些可怕的 SQL 查询。

实体框架代码优先是微软旗舰数据访问技术的最新版本。它位于自 2009 年以来一直存在的“经典”实体框架之上。实体框架已经提供了两种开发模式:

*   数据库优先，它从现有数据库生成代码。
*   模型优先，它定义了一个概念模型，数据库和代码都是从这个概念模型中生成的。

代码优先从“经典”的地方开始:从代码开始并从中生成数据库，这被称为领域驱动设计(DDD)方法。它还提供了一个更简单和精简的应用编程接口，获得了大量当之无愧的关注。

自从实体框架首次包含在 Visual Studio 2008 和。NET Framework 3.5 SP1，当然对象/关系映射在此之前很久就已经存在了，那么为什么会有这么多关于实体框架代码优先(EFCF)的炒作呢？好吧，看起来 EFCF 是街区里新的酷孩子，原因有很多:

*   易于设置:您只需弹出 [NuGet](http://www.nuget.org/) 的包管理器，就完成了。
*   简单易用:没有要掌握的 XML 模式，没有要继承的基类，没有要实现的神秘接口，它有一个干净整洁的 API。您只关注实际的领域模型及其特征，而忘记了持久性细节，这正是领域驱动设计(DDD)的意义所在。
*   它基于一个数据库访问的应用编程接口，您可以期望看到微软对它的更多支持和改进。
*   因为它不依赖于常规。NET 框架发布后，新版本会出现得更频繁。
*   当微软决定发布 EFCF 的源代码并开始接受社区请求甚至拉取请求时，它击中了靶心:bug 修复得更快，你可以影响产品将具有的功能，并且你有机会尝试最新改进的功能。

对于那些来自“经典”实体框架的人来说，这意味着你必须手工编码你自己的实体。这里没有花哨的设计师。这实际上让你更好地控制事物是如何产生的，这并不是一件坏事。

你可以自己做决定。跟着我，让我们先开始探索实体框架代码。