Элемент ComplexTypeMapping (язык MSL)
Элемент ComplexTypeMapping языка MSL является потомком элемента 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>
Для создания импорта функции, возвращающей экземпляры предыдущего сложного типа, сопоставление между возвращаемыми хранимой процедурой столбцами и типом сущности должно быть определено в элементе 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