Поделиться через


Элемент ComplexTypeMapping (язык MSL)

Элемент ComplexTypeMapping языка MSL является потомком элемента 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