共用方式為


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>

為了建立會傳回前一個複雜類型之執行個體的函式匯入,必須在 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>

另請參閱

概念

ScalarProperty 項目 (MSL)

其他資源

模型及對應 (Entity Framework)
How to: Import a Stored Procedure
How to: Map a Function Import to a Complex Type