随着 Entity Framework 最新主版本 EF6 的推出,Microsoft 对象关系映射 (ORM) 工具达到了新的专业高度,与久负盛名的 .NET ORM 工具相比已不再是门外汉。 EF 已经完全成熟,正在超越以前广泛使用的工具。
自 2012 年 EF5 发布后,这种做法带来了两个方面的进步。 首先,从 .NET Framework 中提取所有的 Entity Framework API,并与团队同时正在开发的非常规功能 API 组合在一起。 其次,整个开发工作改用了开源模型。 EF6 在以下网站中公开开发:entityframework.codeplex.com。 您不仅能通过会议记录、签入和可下载夜间生成了解团队所做的工作,还可以向 EF6 提供源代码(但是要在 EF 团队的完全监督之下)。
请记住 EF6 是演变而不是革命。 几乎您原先掌握的所有 EF 技能都没有变化,例如如何生成 Entity Framework 模型以及如何在您的应用程序中使用 EF。 尽管 EF6 是在 ORM 基础上发展而来的,但是并没有改变它根本的工作方式。 如果您已经投入时间学习 EF,那么这种投入将不会白费。 EF6 在某些方面变化还是比较大的,但是这些变化仅限于部分命名空间的变化,如果您有准备的话会很容易处理。
EF6 的功能分为以下几类:
- 免费提供的功能:这些功能属于核心功能的一部分。 您甚至无需知道它们有什么作用,更不必说需要知道有什么新的代码了。 该组包括的功能有通过重写视图生成引擎和查询编译修改来提高性能,由于 DbContext 能使用打开的连接而获得的稳定性,以及 Entity Framework 创建的 SQL Server 数据库的更改设置。
- 级别设置功能:改进较大之处是 Code First 现在支持映射存储过程,而在设计器中创建的模型已支持此功能。 第 9 频道视频对此功能已进行了颇多介绍(例如位于以下网址的视频:http://channel9.msdn.com/Events/TechDays/Belgium-2013/70),而且 CodePlex 网站提供了详细的规范介绍。
- 另外一处更改更为有趣。 正如我刚才提到的,EF6 的 EF API 是从 .NET Framework 中提取的;它们现已完全封装在 NuGet 程序包中。 这意味着 EF5 采用的部分功能(例如枚举、空间数据支持和性能改进)不再依赖于 .NET 4.5。 所以,如果您的 EF6 使用的是 .NET 4,那么这些功能最终会给您带来帮助。
- 我也将 EF 设计器归入了这一类。 从 2013 版开始,Visual Studio 已取消此功能,但是作为 Visual Studio 的扩展功能提供。 对于 EF6 而言,将设计器作为扩展功能具有相当大的好处。 以后团队将能够直接向设计器添加功能,包括 Entity Framework Power Tools 中当前提供的功能。 通过使设计器与 Visual Studio 分离,可以使 Microsoft 为 Visual Studio 2012 和 Visual Studio 2013 提供 EF6 工具。
- 专家功能:这些功能是基本 EF 应用程序示例所不具有的、您渴望拥有的功能。 EF6 中有许多这样的功能:支持异步查询和保存、返回自定义 Code First 约定、利用新的 DbConfiguration 类型提高可扩展性(依赖于较低级别的 EF6 IDbDependency 解析程序)、支持单元测试模拟、可配置不稳定连接的重试次数等。 您无需成为认证专家就能使用这些功能,但您在使用时肯定会感觉像专家,具体可以参考文章Entity Framework 6:专家版本。
Nido Framework 是一个基于.NET 4和 Entity Framework 6的框架,它的开源协议是GPL2,项目地址是https://nidoframework.codeplex.com/。作者在开发这个框架之前在codeproject上写了一篇文章Architecture Guide: ASP.NET MVC Framework + N-tier + Entity Framework and Many More,最近作者又写了另外一篇介绍文章Introduction to Nido (FREE) Framework .NET/ C#。