实体框架和其他平台

大多数应用程序广泛使用关系数据库。开发人员需要一个数据模型,以便使应用程序代码与存储结构相联系。

实体数据模型 (EDM) 支持跨各种存储模型的应用程序方案,并同时映射到 CLR 和数据库管理系统(如 SQL Server)。映射到 CLR 是实现编程所必需的,而映射到关系数据库是实现持久性所必需的。引入 EDM 后,ADO.NET 为将可编程类型映射到存储提供了一个全面的平台。

至少有四种现有平台可作为新数据模型的候选平台:

  • SQL Server

  • 公共语言运行库 (CLR)

  • 统一建模语言 (UML)

  • XML 架构定义 (XSD) 语言

任何一种现有平台都无法满足数据应用程序的全部要求。

  • SQL Server 并未提供与编程语言之间的轻松集成。其基于文本的查询用代码实现时经常很麻烦。数据库表使用外键对关系建模。SQL 无法对严格的包含建模。

  • CLR 不具有对关系建模所需的约束。

  • UML 过于抽象。它不实现数据类型或持久性。

  • XSD 规范与编程语言类和数据库架构之间的差异过大,因而无法提供一种与语言无关的格式以便同时映射到 CLR 和关系数据库模型。

EDM 映射到 CLR 和数据库管理系统

EDM 同时映射到 CLR 和关系数据库。CLR 使开发人员能够以熟悉的编码格式使用数据。代码中的数据类型映射到关系数据库,而关系数据库是实现数据持久性的成熟标准。

为了在架构、编程语言和数据库表之间实现映射,EDM 使用一种独立于存储的视图机制,该机制充分利用关系数据库管理系统的工程设计。常规应用程序已使用数据库视图来进行数据显示和更新,但构造视图通常需要复杂的 SQL 语法(这涉及到表联接和投影)。架构与存储之间的 EDM 映射通过 ADO.NET 数据提供程序将代码中的对象与数据库相连。

EDM 数据服务不依赖于任何特定的存储架构。需要多个数据源的应用程序可以针对每个数据源维护单独的映射。

开发平台

EDM 支持在实现的每个阶段进行应用程序设计。EDM 支持许多有用的现有构造,其设计中使用的概念取自定义完善的数据建模系统,如关系数据库模型、实体-关系模型和公共语言运行库 (CLR)。

EDM 对复杂的应用程序功能建模,并以声明方式捕获可编程对象与数据库存储之间的语义关系。

EDM 包含关系数据库模型的功能,并通过添加强类型、实体级别标识、引用和关系来扩展此模型。

由于 EDM 规范的涉及面很广,因此您可以使用 EDM 规范的子集。例如,应用程序或框架可以使用实体、关联和引用,而不可使用继承。

可以根据两个原则扩展 EDM:

  • 可以使用继承定义新类型或现有类型的扩展。应用程序可以在类型之间和跨架构边界定义关系。

  • 对基于 EDM 生成的现有数据进行的扩展不影响不使用这些扩展的功能。

应用程序间和框架间的共享可以通过以 EDM 方式定义应用程序数据模型来实现。从根据 EDM 生成的一个应用程序,可以使用为另一个应用程序定义的命名空间。

查询模型设计为在关系代数之下处于闭合状态。这意味着,对 EDM 概念应用关系运算符所返回的结果也处于 EDM 中。

将 EDM 与 CLR 集成可获得丰富的数据语义。EDM 类型系统将编程语言中的声明映射到基础存储结构中的数据。

EDM 的实体在逻辑上独立于所使用的持久性实现。数据类型并不规定任何特定的映射或实现,而实体可以映射到各种物理数据源。EDM 并不是要包含或取代 SQL Server 数据定义语言 (DDL)。

设计阶段

使用 EDM 规范设计和实现数据模型时,需要经历三个预备开发阶段。此处按顺序介绍此过程的每个阶段要执行的任务。

  • 在 XML 文件中指定应用程序域中的实体和关系。

  • 对于存储应用程序数据的数据库,在第二个 XML 文件中指定用于描述此数据库的结构的元数据。

  • 将第一个架构中的实体和关系映射到元数据文件中的对应数据库结构。

第一个架构表示开发的概念性阶段,在此阶段中,使用 XML 语法(称为概念性架构定义语言 (CSDL))定义实体和关系。这种类型的文件具有扩展名 .csdl。有关 CSDL 语法的更多信息,请参见架构 (EDM)

存储元数据架构使用存储架构定义语言 (SSDL)。

将概念性架构映射到存储元数据使用第三种 XML 语法(称为映射规范语言 (MSL))。有关映射实体和关系以及 EDM 架构的类型的信息,请参见架构和映射规范(实体框架)

CSDL 架构用于生成由应用程序代码使用的可编程对象模型。支持公共语言运行库 (CLR) 的语言可以使用由生成过程创建的对象模型。有关应用程序代码的示例,请参见 示例应用程序(实体框架)

另请参见

概念

实现实体 (EDM)
实现关联 (EDM)

其他资源

EDM 规范
示例应用程序(实体框架)