次の方法で共有


ComplexTypeMapping 要素 (MSL)

マッピング仕様言語 (MSL) の ComplexTypeMapping 要素は ResultMapping 要素の子であり、次の条件に当てはまる場合に、概念モデルの関数インポートと基になるデータベースのストアド プロシージャ間のマッピングを定義します。

  • 関数インポートが概念の複合型を返す場合

  • ストアド プロシージャが返す列の名前が、複合型のプロパティの名前と完全には一致しない場合

既定では、ストアド プロシージャが返す列と複合型とのマッピングは、列およびプロパティの名前に基づいています。列の名前がプロパティの名前と完全には一致しない場合は、ComplexTypeMapping 要素を使用してマッピングを定義する必要があります。既定のマッピングの例については、「FunctionImportMapping 要素 (MSL)」を参照してください。

ComplexTypeMapping 要素には、次の子要素を含めることができます。

適用可能な属性

次の表は、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>

関連項目

タスク

方法: ストアド プロシージャをインポートする

方法: 関数インポートを複合型にマップする

概念

ScalarProperty 要素 (MSL)

その他の技術情報

モデリングとマッピング