如何:将修改函数映射到存储过程
本主题演示如何使用 ADO.NET 实体数据模型设计器(实体设计器)将实体类型的插入、更新和删除操作映射到存储过程。
实体框架生成一个从 ObjectContext 派生的类,该类表示概念模型中的实体容器。(该派生类的名称即是概念模型文件中的EntityContainer 的名称。)该类公开 SaveChanges 方法,该方法触发对基础数据库的更新。这些更新操作可以使用系统自动生成的 SQL 语句(默认),也可以使用开发人员所指定的存储过程。无论是否使用存储过程来更新数据库,用于创建、更新和删除实体的应用程序代码都是一样的。
将实体类型的插入、更新和删除操作映射到存储过程时,必须执行以下操作:
将这三种操作都映射到存储过程。
以一致的方式映射关联。如果存储过程映射到一种操作的一个关联,其他两种操作也必须映射到该关联。
将具有一对一关系的相关实体映射到存储过程。如果实体以一对多或多对多关系与其他实体相关,则不必将相关实体映射到存储过程。
将插入操作映射到存储过程
将插入操作映射到存储过程
在解决方案资源管理器中,双击<模型名称>.edmx 文件。
该文件即在实体设计器中打开。
右键单击要为其映射插入操作的实体类型。
选择**“存储过程映射”[Stored Procedures Mappings]**。
此时将出现**“映射详细信息”窗口的“映射到实体函数”[Map to Entity Functions]**窗格。
单击**“<选择插入函数>”**。
在下拉列表中选择插入操作要映射到的存储过程。
窗口中填充的是实体属性与存储过程参数之间的默认映射。
通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。
注意 所有实体键都必须具有映射。如果存储过程使用 INSERT 语句,则实体键通常映射到插入新行时创建的主键。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。
单击**“<添加结果绑定>”**。
该字段即变为可编辑状态。
键入包含存储过程返回的数据的参数名称。
单击对应于参数名称的属性字段。
该字段将变成一个下拉属性列表。
选择返回的数据要映射到的属性。
对每个返回值和未映射属性重复步骤 7 到 10。
现在,所选实体类型的插入操作已映射到存储过程。
将更新操作映射到存储过程
将更新操作映射到存储过程
在解决方案资源管理器中,双击<模型名称>.edmx 文件。
该文件即在实体设计器中打开。
右键单击要为其映射更新操作的实体类型。
选择**“存储过程映射”[Stored Procedures Mappings]**。
此时将出现**“映射详细信息”窗口的“映射到实体函数”[Map to Entity Functions]**窗格。
单击**“<选择更新函数>”**。
在下拉列表中选择更新操作要映射到的存储过程。
窗口中填充的是实体属性与存储过程参数之间的默认映射。
通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。
对于每个属性,都可以选中在**“使用原始值”[Use Original Value]**列中的复选框。
通过**“使用原始值”[Use Original Value]选项,可以使用并发控制。如果选中某个属性的“使用原始值”[Use Original Value]**选项,则从数据库读取的该属性的值将传递给指定的存储过程参数。请注意,属性的原始值和当前值都可以传递给不同的参数。
注意 映射更新操作时,可以将存储过程返回的数据映射到实体属性。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。
单击**“<添加结果绑定>”**。
该字段即变为可编辑状态。
键入包含存储过程返回的数据的参数名称。
单击对应于参数名称的属性字段。
在下拉列表中选择返回的数据要映射到的属性。
可以选择对每个返回值重复步骤 8 到 11。
现在,所选实体类型的更新操作已映射到存储过程。
将删除操作映射到存储过程
将删除操作映射到存储过程
在解决方案资源管理器中,双击<模型名称>.edmx 文件。
该文件即在实体设计器中打开。
右键单击要为其映射删除操作的实体类型。
选择**“存储过程映射”[Stored Procedures Mappings]**。
此时将出现**“映射详细信息”窗口的“映射到实体函数”[Map to Entity Functions]**窗格。
单击**“<选择删除函数>”**。
在下拉列表中选择删除操作要映射到的存储过程。
窗口中填充的是实体属性与存储过程参数之间的默认映射。
通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。
注意 必须将关联映射到存储过程参数。在属性下拉列表中,可以选择关联。