生成模型和映射
实体框架 应用程序和服务基于以三种基于 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 的示例数据库。 要了解用于在 SQL Server 的实例中生成 School 数据库的脚本,请参见创建 School 示例数据库(实体框架快速入门)。
School 数据库包含以下各表:
Course
StudentGrade
CourseInstructor
Department
OfficeAssignment
OnlineCourse
OnsiteCourse
Person
此示例数据库突出显示了实体数据模型 工具支持的多种复杂建模方案。 该脚本创建表之间的关系并插入示例数据,以便您可以运行这些示例,从而了解其工作方式。 以下内容演示了 ADO.NET 实体数据模型设计器中显示的 School 模型:
配置实体框架(实体框架任务)
入门(实体框架)
Entity Data Model Tools
CSDL、SSDL 和 MSL 规范