如何:将修改函数映射到存储过程(实体数据模型工具)

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

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

Cc716711.note(zh-cn,VS.100).gif注意:
如果没有将实体类型的插入、更新或删除这三种操作全部映射到存储过程,则在运行时执行的情况下未映射的操作将失败且会引发 UpdateException

下面的过程假定您已在实体设计器中打开一个 .edmx 文件。

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

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

  1. 在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择**“存储过程映射”**。

    此时将出现**“映射详细信息”窗口的“将实体映射到函数”**视图。

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

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

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

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

    Cc716711.note(zh-cn,VS.100).gif注意:
    所有实体键都必须具有映射。如果存储过程使用 INSERT 语句,则实体键通常映射到插入新行时创建的主键。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。

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

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

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

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

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

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

    Cc716711.note(zh-cn,VS.100).gif注意:
    对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用插入操作时针对某参数选中该复选框且返回的值为零,将引发 OptimisticConcurrencyException

  9. 对每个返回值和未映射属性重复步骤 5 到 8。

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

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

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

  1. 在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择**“存储过程映射”**。

    此时将出现**“映射详细信息”窗口的“将实体映射到函数”**视图。

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

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

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

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

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

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

    Cc716711.note(zh-cn,VS.100).gif注意:
    映射更新操作时,可以将存储过程返回的数据映射到实体属性。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。

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

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

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

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

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

    Cc716711.note(zh-cn,VS.100).gif注意:
    对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用更新操作时针对某参数选中该复选框且返回的值为零,将引发 OptimisticConcurrencyException

  10. 可以选择对每个返回值重复步骤 6 到 9。

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

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

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

  1. 在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择**“存储过程映射”**。

    此时将出现**“映射详细信息”窗口的“将实体映射到函数”**视图。

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

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

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

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

    Cc716711.note(zh-cn,VS.100).gif注意:
    必须将关联映射到存储过程参数。在属性下拉列表中,可以选择关联。

Cc716711.note(zh-cn,VS.100).gif注意:
对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用删除操作时针对某参数选中该复选框且返回的值为零,则将引发 OptimisticConcurrencyException

另请参见

任务

演练:将一个实体映射到存储过程(实体数据模型工具)