ADO.NET Entity Framework 实体框架映射方案
实体框架支持多种将概念模型映射到关系数据的方式。有关更多信息,请参见 建模和映射(实体框架)。
实体框架当前支持以下映射方案。
映射方案 |
说明 |
---|---|
简单映射 |
在此映射方案中,概念模型中的每个实体都映射到存储模型中的单个表。这是实体数据模型工具所生成的默认映射。有关更多信息,请参见 快速入门(实体框架)。 |
实体拆分 |
在此映射方案中,概念模型中单个实体的属性映射到两个或更多基础表中的列。在此方案中,表必须共享公共主键。有关更多信息,请参见 演练:将一个实体映射到多个表(实体数据模型工具)和 如何:定义单个实体映射到两个表的模型。 |
概念模型中的水平分区 |
在此映射方案中,概念模型中具有相同属性的多个实体类型映射到同一个表。条件子句用于指定表中的数据分别属于哪个实体类型。此映射类似于每个层次结构一个表继承映射。有关更多信息,请参见 如何:通过每个层次结构一个表继承以定义模型。 |
每个层次结构一个表继承 |
在此映射方案中,继承层次结构中的所有类型都映射到同一个表。条件子句用于定义实体类型。有关更多信息,请参见 演练:映射继承 - 每个层次结构一个表(实体数据模型工具)和 如何:通过每个层次结构一个表继承以定义模型(实体框架)。 |
每种类型一个表继承 |
在此映射方案中,所有类型都分别映射到各自的表。仅属于某个基类型或派生类型的属性存储在映射到该类型的一个表中。有关更多信息,请参见 演练:映射继承 - 每种类型一个表(实体数据模型工具)和 如何:通过每种类型一个表继承以定义模型(实体框架)。 |
每种具体类型一个表继承 |
在此映射方案中,每个非抽象类型分别映射到不同的表。所有这些表所包含的列必须映射到派生类型的所有属性(包括从基类型继承的属性)。 |
每种类型多个实体集 |
在此映射方案中,单个实体类型在概念模型中以两个或更多独立的实体集进行表示。每个实体集分别映射到存储模型中的一个单独的表。有关更多信息,请参见 如何:通过每种类型多个实体集定义模型(实体框架)。 |
复杂类型 |
复杂类型是没有键属性的实体类型的非标量属性。复杂类型可以包含其他嵌套的复杂类型。复杂类型映射到存储模型中的表。有关更多信息,请参见 如何:创建和修改复杂类型(实体数据模型工具)。 |
函数导入映射 |
在此方案中,存储模型中的存储过程映射到概念模型中的 FunctionImport 元素。 执行此函数可使用映射的存储过程返回实体数据。有关更多信息,请参见 如何:导入存储过程(实体数据模型工具)和 如何:使用存储过程定义模型(实体框架)。 |
修改函数映射 |
在此方案中,在存储模型中定义用于插入、更新和删除数据的存储过程。这些函数是为实体类型定义的,以便为特定实体类型提供更新功能。有关更多信息,请参见 演练:将一个实体映射到存储过程(实体数据模型工具)和 如何:定义具有修改存储过程的模型(实体框架)。 |
定义查询映射 |
在此方案中,在存储模型中定义表示数据源中的表的查询。在映射到 SQL Server 数据库时,查询以数据源的本机查询语言(如 Transact-SQL)表示。此 DefiningQuery 元素映射到概念模型中的实体类型。 查询以特定于存储的查询语言进行定义。有关更多信息,请参见 如何:添加定义查询(实体框架)。 在使用定义查询时,无法使用标准更新过程将更新保存到数据源中。可以通过定义修改函数映射来进行更新。 |
查询视图映射 |
在此方案中,会在概念模型中的实体类型与存储模型中的关系表之间定义只读映射。此映射基于对存储模型进行的 Entity SQL 查询定义,该查询返回概念模型中的实体。有关更多信息,请参见 QueryView 元素 (MSL)。 在使用查询视图时,无法使用标准更新过程将更新保存到数据源中。可以通过定义修改函数映射来进行更新。 |
AssociationSet 映射 |
关联定义实体之间的关系。在具有一对一或一对多关联的简单映射中,在概念模型中定义关系的关联会映射到存储模型中的关联。还支持以下更高级的关联集映射:
有关更多信息,请参见 Association 元素 (CSDL)。 |
有关实体数据模型工具所支持的映射方案的信息,请参见 ADO.NET 实体数据模型设计器。