实体框架是为 ADO.NET 开发的一种激动人心的新技术。开发人员可以借助它使用逻辑模型(而不是物 理模型)查看数据,并提供了更高的灵活性。
实体框架的核心是实体数据模型 (EDM)。EDM 定义开发人员通过代码进行交互的实体类型、关系和容 器。实体框架将这些元素映射到关系数据库公开的存储架构上。EDM 通过用于定义概念应用程序模型的 XML 向实体框架公开。概念模型可单独定义,也可与用于定义实际存储架构的 XML 以及用于定义两者之 间映射的 XML 一起定义。尽管可以(有时也有必要)手动编辑 XML,但使用新的可视化实体数据模型设 计器工具来创建和修改实体模型和映射会更加容易。
在本月的专栏中,将讨论如何使用新的可视 化 EDM 设计器工具来设计实体模型,以及如何修改用于定义模型和映射的基础 XML。我将首先介绍在实 体框架(包括 LINQ)中进行交互的各个方面,然后讨论 EDM 适合在何处使用。此外,还将演示如何使用 可视化设计器工具创建实体模型和关联的映射。最后,将向您介绍可以帮助您修改和探索模型和映射的几 个窗口。
在整个专栏中,我将解释 EDM 的不同组件(例如 EntityType 和 Association)的作用 。本专栏中的示例演示了如何创建基本实体。请注意,本专栏中的所有示例均使用 Visual Studio 2008 以及相应的 Entity Framework Beta 3(这些需要单独安装)。我使用的数据库是含有 Beta 3 中 示例的经修改的 Northwind 示例数据库。
理解 EDM
在探讨如何创建和管理实体模型之前 ,首先介绍什么是 EDM 以及它与实体框架的其他元素之间如何进行交互。实体框架由许多部分组成,包 括 EDM 规范及关联的映射、与 EDM 交互的 API,以及帮助定义和管理实体模型和映射的工具。设计实体 模型之后,可以使用不同的 API 根据实体模型来编写代码,例如 EntityClient 提供程序或对象服务( 包括 LINQ to Entities)。
EntityClient 数据提供程序具有与传统 ADO.NET 对象类似的模型, 因为它使用 EntityConnection 和 EntityCommand 对象返回 DbDataReader。EntityClient 提供程序的 命令是使用与 T-SQL 类似的实体 SQL 编写的,它对实体模型中定义的实体以及通过对象服务具体化的对 象进行操作,而不是对数据库对象进行操作。您可以通过实体 SQL 或 LINQ to Entities 使用对象服务 与 EDM 进行交互。通过对象服务,您可以利用概念模型的生成类,这些生成类提供了强类型化对象和持 久性等特性(参见图 1)。
图 1 实体框架概述