ComplexTypeMapping 項目 (MSL)
對應規格語言 (MSL) 中的 ComplexTypeMapping 項目是 ResultMapping 項目的子項目,當下列條件成立時,它會定義概念模型中之函式匯入與基礎資料庫中之預存程序間的對應:
函式匯入會傳回概念複雜類型。
預存程序所傳回之資料行名稱未與複雜類型上的屬性名稱完全相符。
根據預設,預存程序所傳回之資料行與複雜類型間的對應是以資料行和屬性名稱為基礎。如果資料行名稱未完全符合屬性名稱,您必須使用 ComplexTypeMapping 項目來定義對應。如需預設對應之範例,請參閱 FunctionImportMapping 項目 (MSL)。
ComplexTypeMapping 項目可以擁有下列子項目:
- ScalarProperty (零或多個)
適用屬性
下表描述可套用至 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>
請參閱
工作
How to: Import a Stored Procedure
How to: Map a Function Import to a Complex Type