ResultMapping 元素 (MSL)

当满足以下条件时,以映射规范语言 (MSL) 表示的 ResultMapping 元素会定义概念模型中的函数导入与基础数据库中的存储过程之间的映射:

  • 函数导入返回一个概念模型实体类型或复杂类型。

  • 存储过程返回的列的名称与实体类型或复杂类型中的属性名称不完全匹配。

默认情况下,存储过程返回的列与实体类型或复杂类型中的属性之间的映射基于列名称和属性名称。 如果列名称与属性名称不完全匹配,则必须使用 ResultMapping 元素定义映射。 有关默认映射的示例,请参见 FunctionImportMapping 元素 (MSL)

ResultMapping 元素是 FunctionImportMapping 元素的一个子元素。

ResultMapping 元素可以具有以下子元素:

没有适用于 ResultMapping 元素的特性。

示例

请考虑使用以下存储过程:

CREATE PROCEDURE [dbo].[GetGrades]
            @student_Id int
            AS
            SELECT  EnrollmentID as enroll_id, 
                    Grade as grade, 
                    CourseID as course_id, 
                    StudentID as student_id 
            FROM dbo.StudentGrade
            WHERE StudentID = @student_Id

另请考虑使用以下概念模型实体类型:

<EntityType Name="StudentGrade">
  <Key>
    <PropertyRef Name="EnrollmentID" />
  </Key>
  <Property Name="EnrollmentID" Type="Int32" Nullable="false" 
            annotation:StoreGeneratedPattern="Identity" />
  <Property Name="CourseID" Type="Int32" Nullable="false" />
  <Property Name="StudentID" Type="Int32" Nullable="false" />
  <Property Name="Grade" Type="Decimal" Precision="3" Scale="2" />
</EntityType>

为创建返回前一个实体类型的实例的函数导入,必须在 ResultMapping 元素中定义存储过程返回的列与实体类型返回的列之间的映射:

<FunctionImportMapping FunctionImportName="GetGrades"
                       FunctionName="SchoolModel.Store.GetGrades" >
  <ResultMapping>
    <EntityTypeMapping TypeName="SchoolModel.StudentGrade">
      <ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
      <ScalarProperty Name="CourseID" ColumnName="course_id"/>
      <ScalarProperty Name="StudentID" ColumnName="student_id"/>
      <ScalarProperty Name="Grade" ColumnName="grade"/>
    </EntityTypeMapping>
  </ResultMapping>
</FunctionImportMapping>

另请参见

其他资源

CSDL、SSDL 和 MSL 规范
建模和映射(实体框架)
How to: Import a Stored Procedure