本文将介绍以下内容:
实体框架背后的原理
实体数据模型
查询、映射和 n 层开发
本文使用了以下技术:
ADO.NET、LINQ、实体框架
框架概念最初是在 2006 年作为 ADO.NET vNext 引入的,现在它已准备好要在即将发布的 Visual Studio 2008 SP1 中大显身手。在历经多年对类似产品的多次失败尝试后,Microsoft 随 Visual Studio 2008 发布了部分适合于对象关系映射 (ORM) 空间的下列两种技术:LINQ to SQL 和 ADO.NET Entity Framework。随着市场逐渐开始采用这些技术,开发人员希望了解我们目前的状况以及 Microsoft 未来的发展方向。他们还希望了解这些技术开发背后的原理、实体框架不同于市场上其他 ORM 技术的原因以及 Microsoft 对这些技术的投资趋向。
在 Visual Studio 2008 发布伊始,就出现了大量有关 LINQ to SQL 的文章以及介绍应采用哪种技术的文章。在此我将着重介绍实体框架,并深入探讨在开发过程中应该如何进行选择以及为何如此选择。
Microsoft 实体数据模型 (EDM) 基于 Peter Chen 博士的实体关系 (ER) 模型,实际上它是 ADO.NET Entity Framework 背后的驱动力。EDM 也是区分实体框架与市场上其他 ORM 型技术的最明显特征。EDM 构建在 ER 模型之上,它将模型的抽象级别提升到高于逻辑模型的级别,但同时仍保留实体和关系的概念。
为什么需要建立另外一种数据模型?
那么为什么需要建立另外一种模型呢?随着公司数据处理量的增加,理顺数据关系并基于这些数据来开发应用程序变得非常困难。数据库架构的设计需要考虑存储问题(如数据完整性、性能和管理),有时候这不是很容易理解。这些架构还经常与应用程序的结构有冲突,使开发和维护工作变得更加复杂。
我们经常会遇到数据结构与所构建的应用程序被分割开的自定义解决方案。遗憾地是,对每个应用程序而言,自定义解决方案的数量、各种各样的方法以及建模数据所需的步骤都各不相同,导致问题不断产生。整个行业都希望能有一种方法来针对应用程序级的域模型进行定义和开发,以便能够与逻辑模型的存储清晰地分隔开。因此引入了实体框架。
EDM(请参阅图 1 中描述的示例)允许以组织看待和使用数据的方式(不是数据的存储方式)来定义域模型。开发 EDM 还有一个主要目标,那就是在 Microsoft 内成为用于开发人员和服务器技术套件的核心数据模型。
图 1 某个博客数据库的示例实体数据模型