Compartir a través de


ComplexTypeMapping (Elemento) (MSL)

El elemento ComplexTypeMapping del lenguaje de especificación de asignaciones (MSL) es un elemento secundario del elemento ResultMapping y define la asignación entre una importación de función en el modelo conceptual y un procedimiento almacenado en la base de datos subyacente cuando se cumplen las siguientes condiciones:

  • La importación de función devuelve un tipo complejo conceptual.

  • Los nombres de las columnas devueltas por el procedimiento almacenado no coinciden exactamente con los nombres de las propiedades en el tipo complejo.

De forma predeterminada, la asignación entre las columnas devueltas por un procedimiento almacenado y un tipo complejo se basa en los nombres de las propiedades y de las columnas. Si los nombres de las columnas no coinciden exactamente con los nombres de las propiedades, debe utilizar el elemento ComplexTypeMapping para definir la asignación. Para obtener un ejemplo de la asignación predeterminada, vea FunctionImportMapping (Elemento) (MSL).

El elemento ComplexTypeMapping puede tener los elementos secundarios siguientes:

Atributos aplicables

En la tabla siguiente se describen los atributos aplicables al elemento ComplexTypeMapping.

Nombre de atributo Es necesario Valor

TypeName

El nombre completo, incluido el espacio de nombres, del tipo complejo que se está asignando.

Ejemplo

Considere el siguiente procedimiento almacenado:

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

Considere también el siguiente tipo complejo del modelo conceptual:

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

Para crear una importación de función que devuelva instancias del tipo complejo anterior, la asignación entre las columnas devueltas por el procedimiento almacenado y el tipo de entidad se debe definir en un elemento 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>

Vea también

Conceptos

ScalarProperty (Elemento) (MSL)

Otros recursos

Modelado y asignación (Entity Framework)
How to: Import a Stored Procedure
How to: Map a Function Import to a Complex Type