如何:将修改函数映射到存储过程

本主题演示如何使用 ADO.NET 实体数据模型设计器(实体设计器)将实体类型的插入、更新和删除操作映射到存储过程。

实体框架生成一个从 ObjectContext 派生的类,该类表示概念模型中的实体容器。(该派生类的名称即是概念模型文件中的EntityContainer 的名称。)该类公开 SaveChanges 方法,该方法触发对基础数据库的更新。这些更新操作可以使用系统自动生成的 SQL 语句(默认),也可以使用开发人员所指定的存储过程。无论是否使用存储过程来更新数据库,用于创建、更新和删除实体的应用程序代码都是一样的。

将实体类型的插入、更新和删除操作映射到存储过程时,必须执行以下操作:

  • 将这三种操作都映射到存储过程。

  • 以一致的方式映射关联。如果存储过程映射到一种操作的一个关联,其他两种操作也必须映射到该关联。

  • 将具有一对一关系的相关实体映射到存储过程。如果实体以一对多或多对多关系与其他实体相关,则不必将相关实体映射到存储过程。

将插入操作映射到存储过程

将插入操作映射到存储过程

  1. 在解决方案资源管理器中,双击<模型名称>.edmx 文件。

    该文件即在实体设计器中打开。

  2. 右键单击要为其映射插入操作的实体类型。

  3. 选择**“存储过程映射”[Stored Procedures Mappings]**。

    此时将出现**“映射详细信息”窗口的“映射到实体函数”[Map to Entity Functions]**窗格。

  4. 单击**“<选择插入函数>”**。

  5. 在下拉列表中选择插入操作要映射到的存储过程。

    窗口中填充的是实体属性与存储过程参数之间的默认映射。

  6. 通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。

    Note注意

    所有实体键都必须具有映射。如果存储过程使用 INSERT 语句,则实体键通常映射到插入新行时创建的主键。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。

  7. 单击**“<添加结果绑定>”**。

    该字段即变为可编辑状态。

  8. 键入包含存储过程返回的数据的参数名称。

  9. 单击对应于参数名称的属性字段。

    该字段将变成一个下拉属性列表。

  10. 选择返回的数据要映射到的属性。

  11. 对每个返回值和未映射属性重复步骤 7 到 10。

现在,所选实体类型的插入操作已映射到存储过程。

将更新操作映射到存储过程

将更新操作映射到存储过程

  1. 在解决方案资源管理器中,双击<模型名称>.edmx 文件。

    该文件即在实体设计器中打开。

  2. 右键单击要为其映射更新操作的实体类型。

  3. 选择**“存储过程映射”[Stored Procedures Mappings]**。

    此时将出现**“映射详细信息”窗口的“映射到实体函数”[Map to Entity Functions]**窗格。

  4. 单击**“<选择更新函数>”**。

  5. 在下拉列表中选择更新操作要映射到的存储过程。

    窗口中填充的是实体属性与存储过程参数之间的默认映射。

  6. 通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。

  7. 对于每个属性,都可以选中在**“使用原始值”[Use Original Value]**列中的复选框。

    通过**“使用原始值”[Use Original Value]选项,可以使用并发控制。如果选中某个属性的“使用原始值”[Use Original Value]**选项,则从数据库读取的该属性的值将传递给指定的存储过程参数。请注意,属性的原始值和当前值都可以传递给不同的参数。

    Note注意

    映射更新操作时,可以将存储过程返回的数据映射到实体属性。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。

  8. 单击**“<添加结果绑定>”**。

    该字段即变为可编辑状态。

  9. 键入包含存储过程返回的数据的参数名称。

  10. 单击对应于参数名称的属性字段。

  11. 在下拉列表中选择返回的数据要映射到的属性。

  12. 可以选择对每个返回值重复步骤 8 到 11。

现在,所选实体类型的更新操作已映射到存储过程。

将删除操作映射到存储过程

将删除操作映射到存储过程

  1. 在解决方案资源管理器中,双击<模型名称>.edmx 文件。

    该文件即在实体设计器中打开。

  2. 右键单击要为其映射删除操作的实体类型。

  3. 选择**“存储过程映射”[Stored Procedures Mappings]**。

    此时将出现**“映射详细信息”窗口的“映射到实体函数”[Map to Entity Functions]**窗格。

  4. 单击**“<选择删除函数>”**。

  5. 在下拉列表中选择删除操作要映射到的存储过程。

    窗口中填充的是实体属性与存储过程参数之间的默认映射。

  6. 通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。

    Note注意

    必须将关联映射到存储过程参数。在属性下拉列表中,可以选择关联。

另请参见

任务

演练:将实体映射到存储过程

其他资源

存储过程支持(实体框架)
映射的存储过程的应用程序代码(实体框架)