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:
- ScalarProperty (cero o más)
Atributos aplicables
En la tabla siguiente se describen los atributos aplicables al elemento ComplexTypeMapping.
Nombre de atributo | Es necesario | Valor |
---|---|---|
TypeName |
Sí |
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