ResultMapping Element (MSL)

The ResultMapping element in mapping specification language (MSL) defines the mapping between a function import in the conceptual model and a stored procedure in the underlying database when the following are true:

  • The function import returns a conceptual model entity type or complex type.

  • The names of the columns returned by the stored procedure do not exactly match the names of the properties on the entity type or complex type.

By default, the mapping between the columns returned by a stored procedure and an entity type or complex type is based on column and property names. If column names do not exactly match property names, you must use the ResultMapping element to define the mapping. For an example of the default mapping, see FunctionImportMapping Element (MSL).

The ResultMapping element is a child element of the FunctionImportMapping element.

The ResultMapping element can have the following child elements:

No attributes are applicable to the ResultMapping Element.

Example

Consider the following stored procedure:

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

Also consider the following conceptual model entity type:

<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>

In order to create a function import that returns instances of the previous entity type, the mapping between the columns returned by the stored procedure and the entity type must be defined in a ResultMapping element:

<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>

See Also

Other Resources

CSDL, SSDL, and MSL Specifications
Modeling and Mapping
How to: Import a Stored Procedure