ComplexTypeMapping 要素 (MSL)
マッピング仕様言語 (MSL) の ComplexTypeMapping 要素は ResultMapping 要素の子であり、次の条件に当てはまる場合に、概念モデルの関数インポートと基になるデータベースのストアド プロシージャ間のマッピングを定義します。
関数インポートが概念の複合型を返す場合
ストアド プロシージャが返す列の名前が、複合型のプロパティの名前と完全には一致しない場合
既定では、ストアド プロシージャが返す列と複合型とのマッピングは、列およびプロパティの名前に基づいています。列の名前がプロパティの名前と完全には一致しない場合は、ComplexTypeMapping 要素を使用してマッピングを定義する必要があります。既定のマッピングの例については、「FunctionImportMapping 要素 (MSL)」を参照してください。
ComplexTypeMapping 要素には、次の子要素を含めることができます。
- ScalarProperty (0 個以上)
適用可能な属性
次の表は、ComplexTypeMapping 要素に適用できる属性を示しています。
属性名 |
必須 |
値 |
---|---|---|
TypeName |
はい |
マッピングされている複合型の名前空間修飾名です。 |
例
次のストアド プロシージャを考えてみます。
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
また、次の概念モデルの複合型を考えてみます。
<ComplexType Name="GradeInfo">
<Property Type="Int32" Name="EnrollmentID" Nullable="false" />
<Property Type="Decimal" Name="Grade" Nullable="true" Precision="3" Scale="2" />
<Property Type="Int32" Name="CourseID" Nullable="false" />
<Property Type="Int32" Name="StudentID" Nullable="false" />
</ComplexType>
<ComplexType Name="GradeInfo">
<Property Type="Int32" Name="EnrollmentID" Nullable="false" />
<Property Type="Decimal" Name="Grade" Nullable="true"
Precision="3" Scale="2" />
<Property Type="Int32" Name="CourseID" Nullable="false" />
<Property Type="Int32" Name="StudentID" Nullable="false" />
</ComplexType>
以前の複合型のインスタンスを返す関数インポートを作成するには、ストアド プロシージャが返す列とエンティティ型の間のマッピングを ComplexTypeMapping 要素内で定義する必要があります。
<FunctionImportMapping FunctionImportName="GetGrades" FunctionName="SchoolModel.Store.GetGrades">
<ResultMapping>
<ComplexTypeMapping TypeName="SchoolModel.GradeInfo">
<ScalarProperty Name="EnrollmentID" ColumnName="enroll_id" />
<ScalarProperty Name="CourseID" ColumnName="course_id" />
<ScalarProperty Name="StudentID" ColumnName="student_id" />
<ScalarProperty Name="Grade" ColumnName="grade" />
</ComplexTypeMapping>
</ResultMapping>
</FunctionImportMapping>
<FunctionImportMapping FunctionImportName="GetGrades"
FunctionName="SchoolModel.Store.GetGrades" >
<ResultMapping>
<ComplexTypeMapping TypeName="SchoolModel.GradeInfo">
<ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
<ScalarProperty Name="CourseID" ColumnName="course_id"/>
<ScalarProperty Name="StudentID" ColumnName="student_id"/>
<ScalarProperty Name="Grade" ColumnName="grade"/>
</ComplexTypeMapping>
</ResultMapping>
</FunctionImportMapping>