Freigeben über


ComplexTypeMapping-Element (MSL)

Das ComplexTypeMapping-Element in Mapping Specification Language (MSL) ist ein untergeordnetes Element des ResultMapping-Elements und definiert die Zuordnung von einem Funktionsimport im konzeptionellen Modell zu einer gespeicherten Prozedur in der zugrunde liegenden Datenbank, wenn Folgendes zutrifft:

  • Der Funktionsimport gibt einen konzeptionellen komplexen Typ zurück.

  • Die Namen der Spalten, die von der gespeicherten Prozedur zurückgegeben werden, entsprechen nicht genau den Namen der Eigenschaften für den komplexen Typ.

Standardmäßig basiert die Zuordnung der von einer gespeicherten Prozedur zurückgegebenen Spalten zu einem komplexen Typ auf den Spalten- und Eigenschaftennamen. Wenn Spaltennamen nicht exakt mit den Eigenschaftennamen übereinstimmen, müssen Sie die Zuordnung mithilfe des ComplexTypeMapping-Elements definieren. Ein Beispiel für die Standardzuordnung finden Sie unter FunctionImportMapping-Element (MSL).

Das ComplexTypeMapping-Element kann die folgenden untergeordneten Elemente aufweisen:

Anwendbare Attribute

In der folgenden Tabelle werden die Attribute beschrieben, die auf das ComplexTypeMapping-Element anwendbar sind.

Attributname Ist erforderlich Wert

TypeName

Ja

Der namespacequalifizierte Name des komplexen Typs, der zugeordnet wird.

Beispiel

Betrachten Sie die folgende gespeicherte Prozedur:

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

Betrachten Sie auch den folgenden komplexen Typ des konzeptionellen Modells:

<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>

Um einen Funktionsimport zu erstellen, der Instanzen des vorherigen komplexen Typs zurückgibt, muss die Zuordnung der Spalten, die von der gespeicherten Prozedur zurückgegeben werden, zu dem Entitätstyp in einem ComplexTypeMapping-Element definiert werden:

<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>

Siehe auch

Konzepte

ScalarProperty-Element (MSL)

Weitere Ressourcen

Modellieren und Zuordnen (Entity Framework)
How to: Import a Stored Procedure
How to: Map a Function Import to a Complex Type