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


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

Элемент ResultMapping в языке MSL задает сопоставление между импортом функции в концептуальной модели и хранимой процедурой в основной базе данных при следующих условиях.

  • Импорт функции возвращает тип сущности концептуальной модели или сложный тип.

  • Имена столбцов, возвращаемые хранимой процедурой, не совпадают в точности с именами свойств в сложном типе или типе сущности.

По умолчанию сопоставление между столбцами, возвращаемыми хранимой процедурой, и сложным типом или типом сущности выполняется по именам столбцов и свойств. Если имена столбцов в точности не совпадают с именами свойств, то для определения сопоставления необходимо использовать элемент ResultMapping. Пример сопоставления по умолчанию см. в разделе Элемент FunctionImportMapping (язык MSL).

Элемент ResultMapping является дочерним по отношению к элементу FunctionImportMapping.

Элемент ResultMapping может иметь следующие дочерние элементы.

Нет атрибутов, применимых к элементу ResultMapping.

Пример

Рассмотрим следующую хранимую процедуру:

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

Рассмотрим следующий тип сущности концептуальной модели:

<EntityType Name="StudentGrade">
  <Key>
    <PropertyRef Name="EnrollmentID" />
  </Key>
  <Property Name="EnrollmentID" Type="Int32" Nullable="false" 
            annotation:StoreGeneratedPattern="Identity" />
  <Property Name="CourseID" Type="Int32" Nullable="false" />
  <Property Name="StudentID" Type="Int32" Nullable="false" />
  <Property Name="Grade" Type="Decimal" Precision="3" Scale="2" />
</EntityType>

Для создания импорта функции, возвращающей экземпляры предыдущего типа сущности, сопоставление между столбцами, возвращаемыми хранимой процедурой и типом сущности, должно быть определено в элементе ResultMapping.

<FunctionImportMapping FunctionImportName="GetGrades"
                       FunctionName="SchoolModel.Store.GetGrades" >
  <ResultMapping>
    <EntityTypeMapping TypeName="SchoolModel.StudentGrade">
      <ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
      <ScalarProperty Name="CourseID" ColumnName="course_id"/>
      <ScalarProperty Name="StudentID" ColumnName="student_id"/>
      <ScalarProperty Name="Grade" ColumnName="grade"/>
    </EntityTypeMapping>
  </ResultMapping>
</FunctionImportMapping>

См. также

Другие ресурсы

Спецификации языка CSDL, SSDL и MSL
Моделирование и сопоставление (платформа Entity Framework)
How to: Import a Stored Procedure