生成模型和映射

实体框架 应用程序和服务基于以三种基于 XML 的语言表示的模型和映射信息:

CSDL 将应用程序数据表示为概念模型中的一组实体和关系,它是实体数据模型的实现。 以 SSDL 表示的存储模型表示数据存储的架构。 上述两种模型之间的映射以 MSL 表示。

ADO.NET Entity Data Model Tools可自动生成应用程序的 CSDL、SSDL 和 MSL 内容。 Entity Data Model Wizard从现有数据库生成模型和映射信息以及数据类。 然后,可以使用Entity Data Model Designer(实体设计器)以图形方式修改模型和映射信息。 或者,可以使用实体设计器以图形方式创建一个概念模型,接着使用Generate Database Wizard自动生成支持此概念模型的存储模型、映射、数据类和数据库。 在任一方案中,当基础数据库发生更改时,您都可以使用Update Model Wizard更新模型和映射信息。

EDM 生成器 (EdmGen.exe) 是一种命令行工具,通过此工具,您可以生成简单的概念模型,在该模型中实体与数据源中的表之间具有一对一的映射关系。 您还可以使用 EdmGen.exe 验证概念模型,并生成基于模型中的实体类型的数据类。 EdmGen.exe 是 .NET Framework 版本 3.5 Service Pack 1 (SP1) 或更高版本中的实体框架 运行时组件的一部分。

注意事项

当您使用实体数据模型 工具从现有数据库生成概念模型时,需要考虑以下注意事项:

  • 所有实体都必须具有键。 如果数据库中有一个未设置主键的表,那么实体数据模型 工具会尝试为相应的实体推断一个键。 此外,实体数据模型 工具会在存储架构中生成一个 DefiningQuery 元素,使此实体的数据为只读。 若要使此实体数据成为可更新数据,必须确认所生成的键是有效键,然后删除 DefiningQuery 元素。

  • 仅包含外键、表示数据库中两个表之间的多对多关系的表(有时称为纯联接表)在概念模型中没有对应的实体。 当实体数据模型 工具遇到此类表时,会在概念模型中将该表表示为一个多对多关联,而不是实体。 这种行为的一个示例就是 School 模型中的 CourseInstructor 关联。 有关更多信息,请参见生成 School .edmx 文件(实体框架快速入门)

School 模型

入门(实体框架)一节中的主题引用一个名为 School 的示例数据库。 要了解用于在 SQL Server 的实例中生成 School 数据库的脚本,请参见创建 School 示例数据库(实体框架快速入门)

School 数据库包含以下各表:

  • Course

  • StudentGrade

  • CourseInstructor

  • Department

  • OfficeAssignment

  • OnlineCourse

  • OnsiteCourse

  • Person

此示例数据库突出显示了实体数据模型 工具支持的多种复杂建模方案。 该脚本创建表之间的关系并插入示例数据,以便您可以运行这些示例,从而了解其工作方式。 以下内容演示了 ADO.NET 实体数据模型设计器中显示的 School 模型:

实体设计器中的学院 EDM

另请参见

概念

将概念模型映射到存储模型

其他资源

配置实体框架(实体框架任务)
入门(实体框架)
Entity Data Model Tools
CSDL、SSDL 和 MSL 规范