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